From f7c883131c3463756ac935496cfe5da710eec601 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?=
Date: Fri, 2 Aug 2024 00:30:56 +0900
Subject: [PATCH 001/137] fix: Fix codegen of `:is(input:checked)` (#783)
---
src/selector.rs | 7 ++++++-
tests/cli_integration_tests.rs | 20 ++++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/selector.rs b/src/selector.rs
index 62550198..56df04c8 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -1624,8 +1624,13 @@ where
#[inline]
fn has_type_selector(selector: &Selector) -> bool {
- let mut iter = selector.iter_raw_parse_order_from(0);
+ // For input:checked the component vector is
+ // [input, :checked] so we have to check it using matching order.
+ //
+ // This both happens for input:checked and is(input:checked)
+ let mut iter = selector.iter_raw_match_order();
let first = iter.next();
+
if is_namespace(first) {
is_type_selector(iter.next())
} else {
diff --git a/tests/cli_integration_tests.rs b/tests/cli_integration_tests.rs
index 744ac7ca..c57d26e8 100644
--- a/tests/cli_integration_tests.rs
+++ b/tests/cli_integration_tests.rs
@@ -759,3 +759,23 @@ fn browserslist_environment_from_browserslist_env() -> Result<(), Box Result<(), Box> {
+ let infile = assert_fs::NamedTempFile::new("test.css")?;
+ infile.write_str(
+ r#"
+ .cb:is(input:checked) {
+ margin: 3rem;
+ }
+ "#,
+ )?;
+ let outfile = assert_fs::NamedTempFile::new("test.out")?;
+ let mut cmd = Command::cargo_bin("lightningcss")?;
+ cmd.arg(infile.path());
+ cmd.arg("--output-file").arg(outfile.path());
+ cmd.assert().success();
+ outfile.assert(predicate::str::contains(indoc! {r#".cb:is(input:checked)"#}));
+
+ Ok(())
+}
From 3e623473839c7fc76b277f97f88c649c6c94e44e Mon Sep 17 00:00:00 2001
From: neverland
Date: Thu, 1 Aug 2024 23:31:42 +0800
Subject: [PATCH 002/137] Bump browserslist-rs 0.16.0 (#772)
---
Cargo.lock | 156 ++++++++++++++++++++++++++-----------------------
Cargo.toml | 2 +-
c/Cargo.toml | 2 +-
src/targets.rs | 4 +-
4 files changed, 88 insertions(+), 76 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 07d5f7e1..29c70813 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -57,12 +57,6 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
-[[package]]
-name = "anyhow"
-version = "1.0.75"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
-
[[package]]
name = "assert_cmd"
version = "2.0.12"
@@ -145,23 +139,19 @@ dependencies = [
[[package]]
name = "browserslist-rs"
-version = "0.15.0"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "405bbd46590a441abe5db3e5c8af005aa42e640803fecb51912703e93e4ce8d3"
+checksum = "fdf0ca73de70c3da94e4194e4a01fe732378f55d47cf4c0588caab22a0dbfa14"
dependencies = [
"ahash 0.8.7",
- "anyhow",
"chrono",
"either",
"indexmap 2.2.6",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"nom",
"once_cell",
- "quote",
"serde",
"serde_json",
- "string_cache",
- "string_cache_codegen",
"thiserror",
]
@@ -246,14 +236,14 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.31"
+version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
dependencies = [
"android-tzdata",
"iana-time-zone",
"num-traits",
- "windows-targets",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -485,9 +475,9 @@ checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d"
[[package]]
name = "either"
-version = "1.9.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
name = "equivalent"
@@ -699,9 +689,9 @@ dependencies = [
[[package]]
name = "itertools"
-version = "0.12.1"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
dependencies = [
"either",
]
@@ -955,12 +945,6 @@ dependencies = [
"libloading",
]
-[[package]]
-name = "new_debug_unreachable"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
-
[[package]]
name = "nom"
version = "7.1.3"
@@ -1035,16 +1019,6 @@ dependencies = [
"vlq",
]
-[[package]]
-name = "parking_lot"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
[[package]]
name = "parking_lot_core"
version = "0.9.9"
@@ -1055,7 +1029,7 @@ dependencies = [
"libc",
"redox_syscall",
"smallvec",
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -1586,32 +1560,6 @@ dependencies = [
"syn 1.0.109",
]
-[[package]]
-name = "string_cache"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
-dependencies = [
- "new_debug_unreachable",
- "once_cell",
- "parking_lot",
- "phf_shared 0.10.0",
- "precomputed-hash",
- "serde",
-]
-
-[[package]]
-name = "string_cache_codegen"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
-dependencies = [
- "phf_generator 0.10.0",
- "phf_shared 0.10.0",
- "proc-macro2",
- "quote",
-]
-
[[package]]
name = "strsim"
version = "0.10.0"
@@ -1880,7 +1828,7 @@ version = "0.51.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -1889,7 +1837,7 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
- "windows-targets",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -1898,13 +1846,29 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
]
[[package]]
@@ -1913,42 +1877,90 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
[[package]]
name = "windows_i686_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
[[package]]
name = "windows_i686_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
[[package]]
name = "wyz"
version = "0.2.0"
diff --git a/Cargo.toml b/Cargo.toml
index 75bc397c..80e64af3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -65,7 +65,7 @@ paste = "1.0.12"
# CLI deps
atty = { version = "0.2", optional = true }
clap = { version = "3.0.6", features = ["derive"], optional = true }
-browserslist-rs = { version = "0.15.0", optional = true }
+browserslist-rs = { version = "0.16.0", optional = true }
rayon = { version = "1.5.1", optional = true }
dashmap = { version = "5.0.0", optional = true }
serde_json = { version = "1.0.78", optional = true }
diff --git a/c/Cargo.toml b/c/Cargo.toml
index 443d34ba..96641dc7 100644
--- a/c/Cargo.toml
+++ b/c/Cargo.toml
@@ -11,7 +11,7 @@ crate-type = ["cdylib"]
[dependencies]
lightningcss = { path = "../", features = ["browserslist"] }
parcel_sourcemap = { version = "2.1.1", features = ["json"] }
-browserslist-rs = { version = "0.15.0" }
+browserslist-rs = { version = "0.16.0" }
[build-dependencies]
cbindgen = "0.24.3"
diff --git a/src/targets.rs b/src/targets.rs
index 3dd40061..4d44ddae 100644
--- a/src/targets.rs
+++ b/src/targets.rs
@@ -48,7 +48,7 @@ impl Browsers {
) -> Result
From 54390b4596ffd62745e821c5b5cce2f4841fe3a6 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Tue, 10 Sep 2024 22:27:24 -0400
Subject: [PATCH 020/137] Update browser compat data
---
package.json | 4 ++--
src/compat.rs | 64 ++++++++++++++++++++++++++++++-------------------
src/prefixes.rs | 30 +++++++++++------------
yarn.lock | 15 ++++++++----
4 files changed, 66 insertions(+), 47 deletions(-)
diff --git a/package.json b/package.json
index 68e6701d..de3637b3 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.5.44",
+ "@mdn/browser-compat-data": "~5.5.51",
"@napi-rs/cli": "^2.14.0",
"autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001649",
+ "caniuse-lite": "^1.0.30001660",
"codemirror": "^6.0.1",
"cssnano": "^5.0.8",
"esbuild": "^0.19.8",
diff --git a/src/compat.rs b/src/compat.rs
index 6c86d398..339c8754 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -445,7 +445,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -537,7 +537,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -582,7 +582,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -627,7 +627,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -717,7 +717,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -762,7 +762,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -807,7 +807,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -899,7 +899,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -944,7 +944,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1024,7 +1024,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1069,7 +1069,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1159,7 +1159,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1204,7 +1204,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1254,7 +1254,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1341,7 +1341,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1386,7 +1386,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1431,7 +1431,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1471,7 +1471,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1516,7 +1516,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1561,7 +1561,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -1628,7 +1628,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8323072 {
+ if version < 8388608 {
return false;
}
}
@@ -2908,12 +2908,17 @@ impl Feature {
return false;
}
}
+ if let Some(version) = browsers.samsung {
+ if version < 1769472 {
+ return false;
+ }
+ }
if let Some(version) = browsers.android {
if version < 8192000 {
return false;
}
}
- if browsers.ie.is_some() || browsers.samsung.is_some() {
+ if browsers.ie.is_some() {
return false;
}
}
@@ -3385,12 +3390,17 @@ impl Feature {
return false;
}
}
+ if let Some(version) = browsers.samsung {
+ if version < 1769472 {
+ return false;
+ }
+ }
if let Some(version) = browsers.android {
if version < 8060928 {
return false;
}
}
- if browsers.ie.is_some() || browsers.samsung.is_some() {
+ if browsers.ie.is_some() {
return false;
}
}
@@ -5182,6 +5192,11 @@ impl Feature {
return false;
}
}
+ if let Some(version) = browsers.samsung {
+ if version < 1769472 {
+ return false;
+ }
+ }
if let Some(version) = browsers.android {
if version < 8192000 {
return false;
@@ -5191,7 +5206,6 @@ impl Feature {
|| browsers.ie.is_some()
|| browsers.ios_saf.is_some()
|| browsers.safari.is_some()
- || browsers.samsung.is_some()
{
return false;
}
diff --git a/src/prefixes.rs b/src/prefixes.rs
index 5cb213de..b712ddae 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -1190,17 +1190,17 @@ impl Feature {
}
Feature::Fill | Feature::FillAvailable => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 {
+ if version >= 1441792 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1269,7 +1269,7 @@ impl Feature {
}
Feature::Stretch => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 {
+ if version >= 1441792 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1279,12 +1279,12 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1517,17 +1517,17 @@ impl Feature {
}
Feature::BoxDecorationBreak => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 {
+ if version >= 1441792 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1919,17 +1919,17 @@ impl Feature {
}
Feature::CrossFade => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 {
+ if version >= 1114112 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2154,17 +2154,17 @@ impl Feature {
}
Feature::PrintColorAdjust | Feature::ColorAdjust => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 {
+ if version >= 1114112 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8323072 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index b744a2a1..69f27f64 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -454,10 +454,10 @@
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
-"@mdn/browser-compat-data@~5.5.44":
- version "5.5.44"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.5.44.tgz#f791d414b6f5e738c1f0dbba0f5c0136476f3b14"
- integrity sha512-bG2ePe+cjEyZQ9hBB+EzsItnl0hPNs1RLjmRuWX7lS0vJ8ddxTeyoQ8yXkp+DAcprbJ0X65wUCgfjBODCRsB5w==
+"@mdn/browser-compat-data@~5.5.51":
+ version "5.5.51"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.5.51.tgz#49c563e5b46500a987b57f46bde1b0b3343b7039"
+ integrity sha512-17L3+/oqX+sgSyucNKSipri1LkI/d8pwPQI4Vv2ejRVZLZr1WGxcEGBnglqFhdlislQBceJiHAdQnWEE+YJE3A==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.0"
@@ -1347,11 +1347,16 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001649:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646:
version "1.0.30001649"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992"
integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==
+caniuse-lite@^1.0.30001660:
+ version "1.0.30001660"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355"
+ integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
+
chalk@^2.0.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
From 451aff74821e86f1007a4857c81c3db2979645bf Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Tue, 10 Sep 2024 22:27:55 -0400
Subject: [PATCH 021/137] v1.27.0
---
Cargo.lock | 6 +++---
Cargo.toml | 4 ++--
napi/Cargo.toml | 2 +-
node/Cargo.toml | 2 +-
package.json | 2 +-
selectors/Cargo.toml | 2 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 671f2e01..3a156cf1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -756,7 +756,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.58"
+version = "1.0.0-alpha.59"
dependencies = [
"ahash 0.8.7",
"assert_cmd",
@@ -802,7 +802,7 @@ dependencies = [
[[package]]
name = "lightningcss-napi"
-version = "0.2.1"
+version = "0.3.0"
dependencies = [
"crossbeam-channel",
"cssparser",
@@ -990,7 +990,7 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
[[package]]
name = "parcel_selectors"
-version = "0.26.6"
+version = "0.27.0"
dependencies = [
"bitflags 2.4.1",
"cssparser",
diff --git a/Cargo.toml b/Cargo.toml
index dd55452a..7b1cb511 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.58"
+version = "1.0.0-alpha.59"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
@@ -51,7 +51,7 @@ substitute_variables = ["visitor", "into_owned"]
serde = { version = "1.0.201", features = ["derive"], optional = true }
cssparser = "0.33.0"
cssparser-color = "0.1.0"
-parcel_selectors = { version = "0.26.6", path = "./selectors" }
+parcel_selectors = { version = "0.27.0", path = "./selectors" }
itertools = "0.10.1"
smallvec = { version = "1.7.0", features = ["union"] }
bitflags = "2.2.1"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index 477c1898..8807f557 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -1,7 +1,7 @@
[package]
authors = ["Devon Govett "]
name = "lightningcss-napi"
-version = "0.2.1"
+version = "0.3.0"
description = "Node-API bindings for Lightning CSS"
license = "MPL-2.0"
repository = "https://github.com/parcel-bundler/lightningcss"
diff --git a/node/Cargo.toml b/node/Cargo.toml
index 6cf2aa21..aacc0f45 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -9,7 +9,7 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
-lightningcss-napi = { version = "0.2.1", path = "../napi", features = ["bundler", "visitor"] }
+lightningcss-napi = { version = "0.3.0", path = "../napi", features = ["bundler", "visitor"] }
napi = {version = "2.15.4", default-features = false, features = ["compat-mode"]}
napi-derive = "2"
diff --git a/package.json b/package.json
index de3637b3..d6eed968 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.26.0",
+ "version": "1.27.0",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
diff --git a/selectors/Cargo.toml b/selectors/Cargo.toml
index 4c212970..25ab52fd 100644
--- a/selectors/Cargo.toml
+++ b/selectors/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "parcel_selectors"
-version = "0.26.6"
+version = "0.27.0"
authors = ["The Servo Project Developers"]
documentation = "https://docs.rs/parcel_selectors/"
description = "CSS Selectors matching for Rust - forked for lightningcss"
From eb49015cf887ae720b80a2856ccbdf61bf940ef1 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Tue, 10 Sep 2024 22:41:50 -0400
Subject: [PATCH 022/137] Update TS definitions
---
node/index.d.ts | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/node/index.d.ts b/node/index.d.ts
index d138359b..334afc00 100644
--- a/node/index.d.ts
+++ b/node/index.d.ts
@@ -304,7 +304,15 @@ export interface CSSModulesConfig {
/** The pattern to use when renaming class names and other identifiers. Default is `[hash]_[local]`. */
pattern?: string,
/** Whether to rename dashed identifiers, e.g. custom properties. */
- dashedIdents?: boolean
+ dashedIdents?: boolean,
+ /** Whether to enable hashing for `@keyframes`. */
+ animation?: boolean,
+ /** Whether to enable hashing for CSS grid identifiers. */
+ grid?: boolean,
+ /** Whether to enable hashing for custom identifiers. */
+ customIdents?: boolean,
+ /** Whether to require at least one class or id selector in each rule. */
+ pure?: boolean
}
export type CSSModuleExports = {
From 84ebbed7c4645da50ce9dee14001779531366cd6 Mon Sep 17 00:00:00 2001
From: Mayank <9084735+mayank99@users.noreply.github.com>
Date: Mon, 7 Oct 2024 02:57:20 -0400
Subject: [PATCH 023/137] docs: fix link to visitor type definitions (#823)
---
website/pages/transforms.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/website/pages/transforms.md b/website/pages/transforms.md
index e64d1d9f..7441cb5d 100644
--- a/website/pages/transforms.md
+++ b/website/pages/transforms.md
@@ -12,7 +12,7 @@ Custom transforms have a build time cost: it can be around 2x slower to compile
## Visitors
-Custom transforms are implemented by passing a `visitor` object to the Lightning CSS Node API. A visitor includes one or more functions which are called for specific value types such as `Rule`, `Property`, or `Length`. In general, you should try to be as specific as possible about the types of values you want to handle. This way, Lightning CSS needs to call into JS as infrequently as possible, with the smallest objects possible, which improves performance. See the [TypeScript definitions](https://github.com/parcel-bundler/lightningcss/blob/master/node/index.d.ts#L101-L129) for a full list of available visitor functions.
+Custom transforms are implemented by passing a `visitor` object to the Lightning CSS Node API. A visitor includes one or more functions which are called for specific value types such as `Rule`, `Property`, or `Length`. In general, you should try to be as specific as possible about the types of values you want to handle. This way, Lightning CSS needs to call into JS as infrequently as possible, with the smallest objects possible, which improves performance. See the [TypeScript definitions](https://github.com/parcel-bundler/lightningcss/blob/eb49015cf887ae720b80a2856ccbdf61bf940ef1/node/index.d.ts#L184-L214) for a full list of available visitor functions.
Visitors can return a new value to update it. Each visitor accepts a different type of value, and usually expects the same type in return. This example multiplies all lengths by 2:
From 41ce3ab22623ce1703e0ff7ef536160773e610c7 Mon Sep 17 00:00:00 2001
From: inottn
Date: Mon, 4 Nov 2024 00:30:16 +0800
Subject: [PATCH 024/137] fix: should not panic when passing system-color to
color-mix (#819)
---
src/lib.rs | 8 ++++++++
src/values/color.rs | 4 +++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/lib.rs b/src/lib.rs
index 77d904d2..570f449d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -19311,6 +19311,14 @@ mod tests {
".foo { color: color-mix(in srgb, blue, currentColor); }",
".foo{color:color-mix(in srgb,blue,currentColor)}",
);
+ minify_test(
+ ".foo { color: color-mix(in srgb, accentcolor, blue); }",
+ ".foo{color:color-mix(in srgb,accentcolor,blue)}",
+ );
+ minify_test(
+ ".foo { color: color-mix(in srgb, blue, accentcolor); }",
+ ".foo{color:color-mix(in srgb,blue,accentcolor)}",
+ );
// regex for converting web platform tests:
// test_computed_value\(.*?, `(.*?)`, `(.*?)`\);
diff --git a/src/values/color.rs b/src/values/color.rs
index 274c3f43..b65d16a3 100644
--- a/src/values/color.rs
+++ b/src/values/color.rs
@@ -3253,7 +3253,9 @@ impl CssColor {
+ From
+ Copy,
{
- if matches!(self, CssColor::CurrentColor) || matches!(other, CssColor::CurrentColor) {
+ if matches!(self, CssColor::CurrentColor | CssColor::System(..))
+ || matches!(other, CssColor::CurrentColor | CssColor::System(..))
+ {
return Err(());
}
From 9097327d114a8b3c6b19a449fea5695fd338239a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?=
Date: Mon, 4 Nov 2024 01:33:41 +0900
Subject: [PATCH 025/137] feat: Improve error message of `input:placeholder`
(#813)
---
selectors/parser.rs | 17 +++++++++--------
src/error.rs | 16 ++++++++++------
src/lib.rs | 32 ++++++++++++++++++++++++++++++++
src/properties/animation.rs | 6 +++++-
src/selector.rs | 8 ++++----
5 files changed, 60 insertions(+), 19 deletions(-)
diff --git a/selectors/parser.rs b/selectors/parser.rs
index 5eaecb58..f496385a 100644
--- a/selectors/parser.rs
+++ b/selectors/parser.rs
@@ -197,7 +197,8 @@ pub enum SelectorParseErrorKind<'i> {
MissingNestingPrefix,
UnexpectedTokenInAttributeSelector(Token<'i>),
PseudoElementExpectedIdent(Token<'i>),
- UnsupportedPseudoClassOrElement(CowRcStr<'i>),
+ UnsupportedPseudoElement(CowRcStr<'i>),
+ UnsupportedPseudoClass(CowRcStr<'i>),
AmbiguousCssModuleClass(CowRcStr<'i>),
UnexpectedIdent(CowRcStr<'i>),
ExpectedNamespace(CowRcStr<'i>),
@@ -312,7 +313,7 @@ pub trait Parser<'i> {
location: SourceLocation,
name: CowRcStr<'i>,
) -> Result<<'i>>::NonTSPseudoClass, ParseError<'i, Self::Error>> {
- Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name)))
}
fn parse_non_ts_functional_pseudo_class<'t>(
@@ -320,7 +321,7 @@ pub trait Parser<'i> {
name: CowRcStr<'i>,
arguments: &mut CssParser<'i, 't>,
) -> Result<<'i>>::NonTSPseudoClass, ParseError<'i, Self::Error>> {
- Err(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name)))
}
fn parse_pseudo_element(
@@ -328,7 +329,7 @@ pub trait Parser<'i> {
location: SourceLocation,
name: CowRcStr<'i>,
) -> Result<<'i>>::PseudoElement, ParseError<'i, Self::Error>> {
- Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name)))
}
fn parse_functional_pseudo_element<'t>(
@@ -336,7 +337,7 @@ pub trait Parser<'i> {
name: CowRcStr<'i>,
arguments: &mut CssParser<'i, 't>,
) -> Result<<'i>>::PseudoElement, ParseError<'i, Self::Error>> {
- Err(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name)))
}
fn default_namespace(&self) -> Option<<'i>>::NamespaceUrl> {
@@ -3353,7 +3354,7 @@ pub mod tests {
"active" => return Ok(PseudoClass::Active),
_ => {}
}
- Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name)))
}
fn parse_non_ts_functional_pseudo_class<'t>(
@@ -3368,7 +3369,7 @@ pub mod tests {
},
_ => {}
}
- Err(parser.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(parser.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name)))
}
fn parse_pseudo_element(
@@ -3381,7 +3382,7 @@ pub mod tests {
"after" => return Ok(PseudoElement::After),
_ => {}
}
- Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name)))
+ Err(location.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name)))
}
fn default_namespace(&self) -> Option {
diff --git a/src/error.rs b/src/error.rs
index 96421fed..9ba64961 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -230,8 +230,12 @@ pub enum SelectorError<'i> {
UnexpectedTokenInAttributeSelector(
#[cfg_attr(any(feature = "serde", feature = "nodejs"), serde(skip))] Token<'i>,
),
- /// An unsupported pseudo class or pseudo element was encountered.
- UnsupportedPseudoClassOrElement(CowArcStr<'i>),
+
+ /// An unsupported pseudo class was encountered.
+ UnsupportedPseudoClass(CowArcStr<'i>),
+
+ /// An unsupported pseudo element was encountered.
+ UnsupportedPseudoElement(CowArcStr<'i>),
/// Ambiguous CSS module class.
AmbiguousCssModuleClass(CowArcStr<'i>),
@@ -264,7 +268,8 @@ impl<'i> fmt::Display for SelectorError<'i> {
PseudoElementExpectedIdent(token) => write!(f, "Invalid token in pseudo element: {:?}", token),
UnexpectedIdent(name) => write!(f, "Unexpected identifier: {}", name),
UnexpectedTokenInAttributeSelector(token) => write!(f, "Unexpected token in attribute selector: {:?}", token),
- UnsupportedPseudoClassOrElement(name) => write!(f, "Unsupported pseudo class or element: {}", name),
+ UnsupportedPseudoClass(name) =>write!(f, "'{name}' is not recognized as a valid pseudo-class. Did you mean '::{name}' (pseudo-element) or is this a typo?"),
+ UnsupportedPseudoElement(name) => write!(f, "'{name}' is not recognized as a valid pseudo-element. Did you mean ':{name}' (pseudo-class) or is this a typo?"),
AmbiguousCssModuleClass(_) => write!(f, "Ambiguous CSS module class not supported"),
UnexpectedSelectorAfterPseudoElement(token) => {
write!(
@@ -300,9 +305,8 @@ impl<'i> From<'i>> for SelectorError<'i> {
SelectorError::UnexpectedTokenInAttributeSelector(t.into())
}
SelectorParseErrorKind::PseudoElementExpectedIdent(t) => SelectorError::PseudoElementExpectedIdent(t.into()),
- SelectorParseErrorKind::UnsupportedPseudoClassOrElement(t) => {
- SelectorError::UnsupportedPseudoClassOrElement(t.into())
- }
+ SelectorParseErrorKind::UnsupportedPseudoClass(t) => SelectorError::UnsupportedPseudoClass(t.into()),
+ SelectorParseErrorKind::UnsupportedPseudoElement(t) => SelectorError::UnsupportedPseudoElement(t.into()),
SelectorParseErrorKind::UnexpectedIdent(t) => SelectorError::UnexpectedIdent(t.into()),
SelectorParseErrorKind::ExpectedNamespace(t) => SelectorError::ExpectedNamespace(t.into()),
SelectorParseErrorKind::ExpectedBarInAttr(t) => SelectorError::ExpectedBarInAttr(t.into()),
diff --git a/src/lib.rs b/src/lib.rs
index 570f449d..f2649b00 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -27194,6 +27194,14 @@ mod tests {
color: red;
}
}
+
+ input:placeholder {
+ color: red;
+ }
+
+ input::hover {
+ color: red;
+ }
"#,
indoc! { r#"
.foo {
@@ -27209,6 +27217,14 @@ mod tests {
color: red;
}
}
+
+ input:placeholder {
+ color: red;
+ }
+
+ input::hover {
+ color: red;
+ }
"#},
ParserOptions {
filename: "test.css".into(),
@@ -27246,6 +27262,22 @@ mod tests {
column: 9
})
},
+ Error {
+ kind: ParserError::SelectorError(SelectorError::UnsupportedPseudoClass("placeholder".into())),
+ loc: Some(ErrorLocation {
+ filename: "test.css".into(),
+ line: 24,
+ column: 13,
+ }),
+ },
+ Error {
+ kind: ParserError::SelectorError(SelectorError::UnsupportedPseudoElement("hover".into())),
+ loc: Some(ErrorLocation {
+ filename: "test.css".into(),
+ line: 28,
+ column: 13,
+ }),
+ },
]
)
}
diff --git a/src/properties/animation.rs b/src/properties/animation.rs
index f018f4af..51bd1ea4 100644
--- a/src/properties/animation.rs
+++ b/src/properties/animation.rs
@@ -406,7 +406,11 @@ pub enum TimelineRangeName {
/// or [animation-range-end](https://drafts.csswg.org/scroll-animations/#animation-range-end) property.
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "visitor", derive(Visit))]
-#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize), serde(rename_all = "lowercase"))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "lowercase")
+)]
#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
pub enum AnimationAttachmentRange {
diff --git a/src/selector.rs b/src/selector.rs
index dfec516d..73311c8a 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -196,7 +196,7 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
_ => {
if !name.starts_with('-') {
- self.options.warn(loc.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name.clone())));
+ self.options.warn(loc.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name.clone())));
}
Custom { name: name.into() }
}
@@ -225,7 +225,7 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
"global" if self.options.css_modules.is_some() => Global { selector: Box::new(Selector::parse(self, parser)?) },
_ => {
if !name.starts_with('-') {
- self.options.warn(parser.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name.clone())));
+ self.options.warn(parser.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClass(name.clone())));
}
let mut args = Vec::new();
TokenList::parse_raw(parser, &mut args, &self.options, 0)?;
@@ -285,7 +285,7 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
_ => {
if !name.starts_with('-') {
- self.options.warn(loc.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name.clone())));
+ self.options.warn(loc.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name.clone())));
}
Custom { name: name.into() }
}
@@ -309,7 +309,7 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
"view-transition-new" => ViewTransitionNew { part_name: ViewTransitionPartName::parse(arguments)? },
_ => {
if !name.starts_with('-') {
- self.options.warn(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name.clone())));
+ self.options.warn(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name.clone())));
}
let mut args = Vec::new();
TokenList::parse_raw(arguments, &mut args, &self.options, 0)?;
From 6cb5776b56de1b3499aff2f984b2c6c02eef0d7f Mon Sep 17 00:00:00 2001
From: Kornel
Date: Sun, 3 Nov 2024 16:34:15 +0000
Subject: [PATCH 026/137] Dependency updates (#814)
---
Cargo.lock | 92 +++++++-----------------------------
c/build.rs | 2 -
selectors/Cargo.toml | 7 +--
selectors/bloom.rs | 2 +-
selectors/build.rs | 2 -
selectors/lib.rs | 10 ----
selectors/matching.rs | 2 +-
selectors/nth_index_cache.rs | 2 +-
selectors/parser.rs | 4 +-
9 files changed, 26 insertions(+), 97 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 3a156cf1..2769d0c3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -194,12 +194,6 @@ dependencies = [
"syn 1.0.109",
]
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
[[package]]
name = "cbindgen"
version = "0.24.5"
@@ -372,7 +366,7 @@ dependencies = [
"cssparser-macros",
"dtoa-short",
"itoa",
- "phf 0.11.2",
+ "phf",
"serde",
"smallvec",
]
@@ -528,15 +522,6 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
-[[package]]
-name = "fxhash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
-dependencies = [
- "byteorder",
-]
-
[[package]]
name = "getrandom"
version = "0.2.10"
@@ -994,11 +979,11 @@ version = "0.27.0"
dependencies = [
"bitflags 2.4.1",
"cssparser",
- "fxhash",
"log",
- "phf 0.10.1",
+ "phf",
"phf_codegen",
"precomputed-hash",
+ "rustc-hash",
"schemars",
"serde",
"smallvec",
@@ -1044,15 +1029,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
-[[package]]
-name = "phf"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
-dependencies = [
- "phf_shared 0.10.0",
-]
-
[[package]]
name = "phf"
version = "0.11.2"
@@ -1060,27 +1036,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
dependencies = [
"phf_macros",
- "phf_shared 0.11.2",
+ "phf_shared",
]
[[package]]
name = "phf_codegen"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
-dependencies = [
- "phf_generator 0.10.0",
- "phf_shared 0.10.0",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.10.0"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
dependencies = [
- "phf_shared 0.10.0",
- "rand",
+ "phf_generator",
+ "phf_shared",
]
[[package]]
@@ -1089,7 +1055,7 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
dependencies = [
- "phf_shared 0.11.2",
+ "phf_shared",
"rand",
]
@@ -1099,22 +1065,13 @@ version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
dependencies = [
- "phf_generator 0.11.2",
- "phf_shared 0.11.2",
+ "phf_generator",
+ "phf_shared",
"proc-macro2",
"quote",
"syn 2.0.63",
]
-[[package]]
-name = "phf_shared"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
-dependencies = [
- "siphasher",
-]
-
[[package]]
name = "phf_shared"
version = "0.11.2"
@@ -1124,12 +1081,6 @@ dependencies = [
"siphasher",
]
-[[package]]
-name = "ppv-lite86"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
-
[[package]]
name = "precomputed-hash"
version = "0.1.1"
@@ -1262,18 +1213,6 @@ version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
- "libc",
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
"rand_core",
]
@@ -1282,9 +1221,6 @@ name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom",
-]
[[package]]
name = "rayon"
@@ -1381,6 +1317,12 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
[[package]]
name = "rustix"
version = "0.38.21"
diff --git a/c/build.rs b/c/build.rs
index 6dac4f91..02fcb75b 100644
--- a/c/build.rs
+++ b/c/build.rs
@@ -1,5 +1,3 @@
-extern crate cbindgen;
-
use std::env;
fn main() {
diff --git a/selectors/Cargo.toml b/selectors/Cargo.toml
index 25ab52fd..32c6a891 100644
--- a/selectors/Cargo.toml
+++ b/selectors/Cargo.toml
@@ -9,6 +9,7 @@ readme = "README.md"
keywords = ["css", "selectors"]
license = "MPL-2.0"
build = "build.rs"
+edition = "2021"
[lib]
name = "parcel_selectors"
@@ -24,9 +25,9 @@ serde = ["dep:serde", "smallvec/serde"]
[dependencies]
bitflags = "2.2.1"
cssparser = "0.33.0"
-fxhash = "0.2"
+rustc-hash = "2"
log = "0.4"
-phf = "0.10"
+phf = "0.11.2"
precomputed-hash = "0.1"
smallvec = "1.0"
serde = { version = "1.0.201", features = ["derive"], optional = true }
@@ -34,4 +35,4 @@ schemars = { version = "0.8.19", features = ["smallvec"], optional = true }
static-self = { version = "0.1.0", path = "../static-self", optional = true }
[build-dependencies]
-phf_codegen = "0.10"
+phf_codegen = "0.11"
diff --git a/selectors/bloom.rs b/selectors/bloom.rs
index bbfbee45..e9d2f730 100644
--- a/selectors/bloom.rs
+++ b/selectors/bloom.rs
@@ -283,7 +283,7 @@ fn hash2(hash: u32) -> u32 {
#[test]
fn create_and_insert_some_stuff() {
- use fxhash::FxHasher;
+ use rustc_hash::FxHasher;
use std::hash::{Hash, Hasher};
use std::mem::transmute;
diff --git a/selectors/build.rs b/selectors/build.rs
index 945bb9bb..787e2d80 100644
--- a/selectors/build.rs
+++ b/selectors/build.rs
@@ -2,8 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-extern crate phf_codegen;
-
use std::env;
use std::fs::File;
use std::io::{BufWriter, Write};
diff --git a/selectors/lib.rs b/selectors/lib.rs
index 56217d28..2047b4e6 100644
--- a/selectors/lib.rs
+++ b/selectors/lib.rs
@@ -9,18 +9,8 @@
extern crate bitflags;
#[macro_use]
extern crate cssparser;
-extern crate fxhash;
#[macro_use]
extern crate log;
-extern crate phf;
-extern crate precomputed_hash;
-#[cfg(feature = "jsonschema")]
-extern crate schemars;
-#[cfg(feature = "serde")]
-extern crate serde;
-extern crate smallvec;
-#[cfg(feature = "into_owned")]
-extern crate static_self;
pub mod attr;
pub mod bloom;
diff --git a/selectors/matching.rs b/selectors/matching.rs
index ce3d7a59..61f74a85 100644
--- a/selectors/matching.rs
+++ b/selectors/matching.rs
@@ -60,7 +60,7 @@ impl ElementSelectorFlags {
}
/// Holds per-compound-selector data.
-struct LocalMatchingContext<'a, 'b: 'a, 'i, Impl: SelectorImpl<'i>> {
+struct LocalMatchingContext<'a, 'b, 'i, Impl: SelectorImpl<'i>> {
shared: &'a mut MatchingContext<'b, 'i, Impl>,
matches_hover_and_active_quirk: MatchesHoverAndActiveQuirk,
}
diff --git a/selectors/nth_index_cache.rs b/selectors/nth_index_cache.rs
index 2ca33e7b..c5bb8db0 100644
--- a/selectors/nth_index_cache.rs
+++ b/selectors/nth_index_cache.rs
@@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::tree::OpaqueElement;
-use fxhash::FxHashMap;
+use rustc_hash::FxHashMap;
/// A cache to speed up matching of nth-index-like selectors.
///
diff --git a/selectors/parser.rs b/selectors/parser.rs
index f496385a..5f32ff79 100644
--- a/selectors/parser.rs
+++ b/selectors/parser.rs
@@ -1009,7 +1009,7 @@ impl<'i, Impl: SelectorImpl<'i>> From<'i, Impl>>> for Selector<'i,
}
#[derive(Clone)]
-pub struct SelectorIter<'a, 'i, Impl: 'a + SelectorImpl<'i>> {
+pub struct SelectorIter<'a, 'i, Impl: SelectorImpl<'i>> {
iter: slice::Iter<'a, Component<'i, Impl>>,
next_combinator: Option,
}
@@ -1092,7 +1092,7 @@ impl<'a, 'i, Impl: SelectorImpl<'i>> fmt::Debug for SelectorIter<'a, 'i, Impl> {
}
/// An iterator over all simple selectors belonging to ancestors.
-struct AncestorIter<'a, 'i, Impl: 'a + SelectorImpl<'i>>(SelectorIter<'a, 'i, Impl>);
+struct AncestorIter<'a, 'i, Impl: SelectorImpl<'i>>(SelectorIter<'a, 'i, Impl>);
impl<'a, 'i, Impl: 'a + SelectorImpl<'i>> AncestorIter<'a, 'i, Impl> {
/// Creates an AncestorIter. The passed-in iterator is assumed to point to
/// the beginning of the child sequence, which will be skipped.
From 22a8b6f937d391ca98adb09ae7971f34a46d2b5d Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 09:02:05 -0800
Subject: [PATCH 027/137] Flush size properties when we hit an unparsed value
Fixes #805, closes #838
---
src/lib.rs | 9 +++++++++
src/properties/size.rs | 1 +
2 files changed, 10 insertions(+)
diff --git a/src/lib.rs b/src/lib.rs
index f2649b00..21529f03 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -3966,6 +3966,15 @@ mod tests {
minify_test(".foo { aspect-ratio: 2 / 3 }", ".foo{aspect-ratio:2/3}");
minify_test(".foo { aspect-ratio: auto 2 / 3 }", ".foo{aspect-ratio:auto 2/3}");
minify_test(".foo { aspect-ratio: 2 / 3 auto }", ".foo{aspect-ratio:auto 2/3}");
+
+ minify_test(
+ ".foo { width: 200px; width: var(--foo); }",
+ ".foo{width:200px;width:var(--foo)}",
+ );
+ minify_test(
+ ".foo { width: var(--foo); width: 200px; }",
+ ".foo{width:var(--foo);width:200px}",
+ );
}
#[test]
diff --git a/src/properties/size.rs b/src/properties/size.rs
index 2475773b..0c873357 100644
--- a/src/properties/size.rs
+++ b/src/properties/size.rs
@@ -433,6 +433,7 @@ impl<'i> PropertyHandler<'i> for SizeHandler {
Property::MinInlineSize(size) => property!(min_inline_size, size, Logical),
Property::MaxInlineSize(size) => property!(max_inline_size, size, Logical),
Property::Unparsed(unparsed) => {
+ self.flush(dest, context);
macro_rules! logical_unparsed {
($physical: ident) => {
if logical_supported {
From e3c8e12f989651c51d3ae430d888bee7eb058207 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 10:05:22 -0800
Subject: [PATCH 028/137] Fix stack overflows in calc
Fixes #827, fixes #791, fixes #611, closes #832
---
src/lib.rs | 21 ++++++++++++++
src/values/calc.rs | 68 +++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/src/lib.rs b/src/lib.rs
index 21529f03..3421a323 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -7847,6 +7847,27 @@ mod tests {
".foo{transform:rotateX(-40deg)rotateY(50deg)}",
);
minify_test(".foo { width: calc(10px * mod(18, 5)) }", ".foo{width:30px}");
+
+ minify_test(
+ ".foo { width: calc(100% - 30px - 0) }",
+ ".foo{width:calc(100% - 30px - 0)}",
+ );
+ minify_test(
+ ".foo { width: calc(100% - 30px - 1 - 2) }",
+ ".foo{width:calc(100% - 30px - 3)}",
+ );
+ minify_test(
+ ".foo { width: calc(1 - 2 - 100% - 30px) }",
+ ".foo{width:calc(-1 - 100% - 30px)}",
+ );
+ minify_test(
+ ".foo { width: calc(2 * min(1px, 1vmin) - min(1px, 1vmin)); }",
+ ".foo{width:calc(2*min(1px,1vmin) - min(1px,1vmin))}",
+ );
+ minify_test(
+ ".foo { width: calc(100% - clamp(1.125rem, 1.25vw, 1.2375rem) - clamp(1.125rem, 1.25vw, 1.2375rem)); }",
+ ".foo{width:calc(100% - clamp(1.125rem,1.25vw,1.2375rem) - clamp(1.125rem,1.25vw,1.2375rem))}",
+ );
}
#[test]
diff --git a/src/values/calc.rs b/src/values/calc.rs
index 742c5184..22610e58 100644
--- a/src/values/calc.rs
+++ b/src/values/calc.rs
@@ -908,11 +908,31 @@ impl> + std::convert::From>
match (self, other) {
(Calc::Value(a), Calc::Value(b)) => (a.add(*b)).into(),
(Calc::Number(a), Calc::Number(b)) => Calc::Number(a + b),
+ (Calc::Sum(a, b), Calc::Number(c)) => {
+ if let Calc::Number(a) = *a {
+ Calc::Sum(Box::new(Calc::Number(a + c)), b)
+ } else if let Calc::Number(b) = *b {
+ Calc::Sum(a, Box::new(Calc::Number(b + c)))
+ } else {
+ Calc::Sum(Box::new(Calc::Sum(a, b)), Box::new(Calc::Number(c)))
+ }
+ }
+ (Calc::Number(a), Calc::Sum(b, c)) => {
+ if let Calc::Number(b) = *b {
+ Calc::Sum(Box::new(Calc::Number(a + b)), c)
+ } else if let Calc::Number(c) = *c {
+ Calc::Sum(Box::new(Calc::Number(a + c)), b)
+ } else {
+ Calc::Sum(Box::new(Calc::Number(a)), Box::new(Calc::Sum(b, c)))
+ }
+ }
+ (a @ Calc::Product(..), b) => Calc::Sum(Box::new(a), Box::new(b)),
+ (a, b @ Calc::Product(..)) => Calc::Sum(Box::new(a), Box::new(b)),
(Calc::Value(a), b) => (a.add(V::from(b))).into(),
(a, Calc::Value(b)) => (V::from(a).add(*b)).into(),
(Calc::Function(a), b) => Calc::Sum(Box::new(Calc::Function(a)), Box::new(b)),
(a, Calc::Function(b)) => Calc::Sum(Box::new(a), Box::new(Calc::Function(b))),
- (a, b) => V::from(a).add(V::from(b)).into(),
+ (a @ Calc::Sum(..), b @ Calc::Sum(..)) => V::from(a).add(V::from(b)).into(),
}
}
}
@@ -966,6 +986,52 @@ impl TrySign for Calc {
match self {
Calc::Number(v) => v.try_sign(),
Calc::Value(v) => v.try_sign(),
+ Calc::Product(c, v) => v.try_sign().map(|s| s * c.sign()),
+ Calc::Function(f) => f.try_sign(),
+ _ => None,
+ }
+ }
+}
+
+impl TrySign for MathFunction {
+ fn try_sign(&self) -> Option {
+ match self {
+ MathFunction::Abs(_) => Some(1.0),
+ MathFunction::Max(values) | MathFunction::Min(values) => {
+ let mut iter = values.iter();
+ if let Some(sign) = iter.next().and_then(|f| f.try_sign()) {
+ for value in iter {
+ if let Some(s) = value.try_sign() {
+ if s != sign {
+ return None;
+ }
+ } else {
+ return None;
+ }
+ }
+ return Some(sign);
+ } else {
+ return None;
+ }
+ }
+ MathFunction::Clamp(a, b, c) => {
+ if let (Some(a), Some(b), Some(c)) = (a.try_sign(), b.try_sign(), c.try_sign()) {
+ if a == b && b == c {
+ return Some(a);
+ }
+ }
+ return None;
+ }
+ MathFunction::Round(_, a, b) => {
+ if let (Some(a), Some(b)) = (a.try_sign(), b.try_sign()) {
+ if a == b {
+ return Some(a);
+ }
+ }
+ return None;
+ }
+ MathFunction::Sign(v) => v.try_sign(),
+ MathFunction::Calc(v) => v.try_sign(),
_ => None,
}
}
From 378955ed60e88b00791b08c32d9e6d39bea7a4c6 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 10:24:39 -0800
Subject: [PATCH 029/137] Fix crash in invalid calc
Fixes #626
---
src/lib.rs | 4 ++++
src/values/calc.rs | 10 ++++++----
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 3421a323..dbbe5862 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -7868,6 +7868,10 @@ mod tests {
".foo { width: calc(100% - clamp(1.125rem, 1.25vw, 1.2375rem) - clamp(1.125rem, 1.25vw, 1.2375rem)); }",
".foo{width:calc(100% - clamp(1.125rem,1.25vw,1.2375rem) - clamp(1.125rem,1.25vw,1.2375rem))}",
);
+ minify_test(
+ ".foo { width: calc(100% - 2 (2 * var(--card-margin))); }",
+ ".foo{width:calc(100% - 2 (2*var(--card-margin)))}",
+ );
}
#[test]
diff --git a/src/values/calc.rs b/src/values/calc.rs
index 22610e58..a29ee88d 100644
--- a/src/values/calc.rs
+++ b/src/values/calc.rs
@@ -926,12 +926,14 @@ impl> + std::convert::From>
Calc::Sum(Box::new(Calc::Number(a)), Box::new(Calc::Sum(b, c)))
}
}
- (a @ Calc::Product(..), b) => Calc::Sum(Box::new(a), Box::new(b)),
- (a, b @ Calc::Product(..)) => Calc::Sum(Box::new(a), Box::new(b)),
- (Calc::Value(a), b) => (a.add(V::from(b))).into(),
- (a, Calc::Value(b)) => (V::from(a).add(*b)).into(),
+ (a @ Calc::Number(_), b)
+ | (a, b @ Calc::Number(_))
+ | (a @ Calc::Product(..), b)
+ | (a, b @ Calc::Product(..)) => Calc::Sum(Box::new(a), Box::new(b)),
(Calc::Function(a), b) => Calc::Sum(Box::new(Calc::Function(a)), Box::new(b)),
(a, Calc::Function(b)) => Calc::Sum(Box::new(a), Box::new(Calc::Function(b))),
+ (Calc::Value(a), b) => (a.add(V::from(b))).into(),
+ (a, Calc::Value(b)) => (V::from(a).add(*b)).into(),
(a @ Calc::Sum(..), b @ Calc::Sum(..)) => V::from(a).add(V::from(b)).into(),
}
}
From ddc9ce868d82d893d579643c83a6774fd966f917 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 11:15:15 -0800
Subject: [PATCH 030/137] Only reduce clamp if comparison between center and
max is known
Fixes #836
---
src/lib.rs | 6 +++++-
src/values/calc.rs | 30 ++++++++++++++++--------------
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index dbbe5862..4af5c46d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -7704,7 +7704,7 @@ mod tests {
);
minify_test(
".foo { border-width: clamp(1em, 2em, 4vh) }",
- ".foo{border-width:min(2em,4vh)}",
+ ".foo{border-width:clamp(1em,2em,4vh)}",
);
minify_test(
".foo { border-width: clamp(1em, 2vh, 4vh) }",
@@ -7715,6 +7715,10 @@ mod tests {
".foo{border-width:clamp(1px,1px + 2em,4px)}",
);
minify_test(".foo { border-width: clamp(1px, 2pt, 1in) }", ".foo{border-width:2pt}");
+ minify_test(
+ ".foo { width: clamp(-100px, 0px, 50% - 50vw); }",
+ ".foo{width:clamp(-100px,0px,50% - 50vw)}",
+ );
minify_test(
".foo { top: calc(-1 * clamp(1.75rem, 8vw, 4rem)) }",
diff --git a/src/values/calc.rs b/src/values/calc.rs
index a29ee88d..8c0c5e4f 100644
--- a/src/values/calc.rs
+++ b/src/values/calc.rs
@@ -400,22 +400,24 @@ impl<
None => {}
}
- let cmp = if let (Some(Calc::Value(min_val)), Calc::Value(center_val)) = (&min, ¢er) {
- center_val.partial_cmp(&min_val)
- } else {
- None
- };
+ if cmp.is_some() {
+ let cmp = if let (Some(Calc::Value(min_val)), Calc::Value(center_val)) = (&min, ¢er) {
+ center_val.partial_cmp(&min_val)
+ } else {
+ None
+ };
- // If center is known to be less than the minimum, replace it with minimum and remove the min argument.
- // Otherwise, if center is known to be greater than the minimum, remove the min argument.
- match cmp {
- Some(std::cmp::Ordering::Less) => {
- center = std::mem::take(&mut min).unwrap();
- }
- Some(_) => {
- min = None;
+ // If center is known to be less than the minimum, replace it with minimum and remove the min argument.
+ // Otherwise, if center is known to be greater than the minimum, remove the min argument.
+ match cmp {
+ Some(std::cmp::Ordering::Less) => {
+ center = std::mem::take(&mut min).unwrap();
+ }
+ Some(_) => {
+ min = None;
+ }
+ None => {}
}
- None => {}
}
// Generate clamp(), min(), max(), or value depending on which arguments are left.
From 41a07a14bd7060d81d3a70d678cf458228088170 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?=
Date: Mon, 4 Nov 2024 04:45:42 +0900
Subject: [PATCH 031/137] feat: Add an error for the deprecated `@value`
at-rule of CSS Modules (#842)
---
src/error.rs | 3 +++
src/lib.rs | 22 ++++++++++++++++++++++
src/parser.rs | 6 ++++++
3 files changed, 31 insertions(+)
diff --git a/src/error.rs b/src/error.rs
index 9ba64961..d936474e 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -88,6 +88,8 @@ pub enum ParserError<'i> {
InvalidNesting,
/// The @nest rule is deprecated.
DeprecatedNestRule,
+ /// The @value rule (of CSS modules) is deprecated.
+ DeprecatedCssModulesValueRule,
/// An invalid selector in an `@page` rule.
InvalidPageSelector,
/// An invalid value was encountered.
@@ -118,6 +120,7 @@ impl<'i> fmt::Display for ParserError<'i> {
InvalidMediaQuery => write!(f, "Invalid media query"),
InvalidNesting => write!(f, "Invalid nesting"),
DeprecatedNestRule => write!(f, "The @nest rule is deprecated"),
+ DeprecatedCssModulesValueRule => write!(f, "The @value rule is deprecated"),
InvalidPageSelector => write!(f, "Invalid page selector"),
InvalidValue => write!(f, "Invalid value"),
QualifiedRuleInvalid => write!(f, "Invalid qualified rule"),
diff --git a/src/lib.rs b/src/lib.rs
index 4af5c46d..180f4fdc 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -230,6 +230,20 @@ mod tests {
}
}
+ fn css_modules_error_test(source: &str, error: ParserError) {
+ let res = StyleSheet::parse(
+ &source,
+ ParserOptions {
+ css_modules: Some(Default::default()),
+ ..Default::default()
+ },
+ );
+ match res {
+ Ok(_) => unreachable!(),
+ Err(e) => assert_eq!(e.kind, error),
+ }
+ }
+
macro_rules! map(
{ $($key:expr => $name:literal $(referenced: $referenced: literal)? $($value:literal $(global: $global: literal)? $(from $from:literal)?)*),* } => {
{
@@ -27691,6 +27705,14 @@ mod tests {
);
}
+ #[test]
+ fn test_css_modules_value_rule() {
+ css_modules_error_test(
+ "@value compact: (max-width: 37.4375em);",
+ ParserError::DeprecatedCssModulesValueRule,
+ );
+ }
+
#[test]
fn test_unknown_at_rules() {
minify_test("@foo;", "@foo;");
diff --git a/src/parser.rs b/src/parser.rs
index 2d476844..080753be 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -678,6 +678,12 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
let selectors = SelectorList::parse(&selector_parser, input, ParseErrorRecovery::DiscardList, NestingRequirement::Contained)?;
AtRulePrelude::Nest(selectors)
},
+
+ "value" if self.options.css_modules.is_some() => {
+ return Err(input.new_custom_error(ParserError::DeprecatedCssModulesValueRule));
+ },
+
+
_ => parse_custom_at_rule_prelude(&name, input, self.options, self.at_rule_parser)?
};
From c24fe64bc991be5862853aaed210f768fef90bf3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?=
Date: Mon, 4 Nov 2024 04:49:42 +0900
Subject: [PATCH 032/137] fix(css-modules): Do not transform the container name
in CSS Modules (#835)
---
napi/src/lib.rs | 3 +++
src/css_modules.rs | 4 ++++
src/lib.rs | 52 ++++++++++++++++++++++++++++++++++++++++++
src/rules/container.rs | 10 +++++++-
4 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/napi/src/lib.rs b/napi/src/lib.rs
index 18bbd7e4..dff48805 100644
--- a/napi/src/lib.rs
+++ b/napi/src/lib.rs
@@ -606,6 +606,7 @@ struct CssModulesConfig {
pattern: Option,
dashed_idents: Option,
animation: Option,
+ container: Option,
grid: Option,
custom_idents: Option,
pure: Option,
@@ -718,6 +719,7 @@ fn compile<'i>(
},
dashed_idents: c.dashed_idents.unwrap_or_default(),
animation: c.animation.unwrap_or(true),
+ container: c.container.unwrap_or(true),
grid: c.grid.unwrap_or(true),
custom_idents: c.custom_idents.unwrap_or(true),
pure: c.pure.unwrap_or_default(),
@@ -849,6 +851,7 @@ fn compile_bundle<
},
dashed_idents: c.dashed_idents.unwrap_or_default(),
animation: c.animation.unwrap_or(true),
+ container: c.container.unwrap_or(true),
grid: c.grid.unwrap_or(true),
custom_idents: c.custom_idents.unwrap_or(true),
pure: c.pure.unwrap_or_default(),
diff --git a/src/css_modules.rs b/src/css_modules.rs
index 65e8543a..ce7008df 100644
--- a/src/css_modules.rs
+++ b/src/css_modules.rs
@@ -41,6 +41,9 @@ pub struct Config<'i> {
/// Whether to scope custom identifiers
/// Default is `true`.
pub custom_idents: bool,
+ /// Whether to scope container names.
+ /// Default is `true`.
+ pub container: bool,
/// Whether to check for pure CSS modules.
pub pure: bool,
}
@@ -52,6 +55,7 @@ impl<'i> Default for Config<'i> {
dashed_idents: Default::default(),
animation: true,
grid: true,
+ container: true,
custom_idents: true,
pure: false,
}
diff --git a/src/lib.rs b/src/lib.rs
index 180f4fdc..3abb7e32 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -24415,6 +24415,58 @@ mod tests {
},
);
+ css_modules_test(
+ r#"
+ .box2 {
+ @container main (width >= 0) {
+ background-color: #90ee90;
+ }
+ }
+ "#,
+ indoc! {r#"
+ .EgL3uq_box2 {
+ @container EgL3uq_main (width >= 0) {
+ & {
+ background-color: #90ee90;
+ }
+ }
+ }
+ "#},
+ map! {
+ "main" => "EgL3uq_main",
+ "box2" => "EgL3uq_box2"
+ },
+ HashMap::new(),
+ crate::css_modules::Config { ..Default::default() },
+ );
+
+ css_modules_test(
+ r#"
+ .box2 {
+ @container main (width >= 0) {
+ background-color: #90ee90;
+ }
+ }
+ "#,
+ indoc! {r#"
+ .EgL3uq_box2 {
+ @container main (width >= 0) {
+ & {
+ background-color: #90ee90;
+ }
+ }
+ }
+ "#},
+ map! {
+ "box2" => "EgL3uq_box2"
+ },
+ HashMap::new(),
+ crate::css_modules::Config {
+ container: false,
+ ..Default::default()
+ },
+ );
+
// Stable hashes between project roots.
fn test_project_root(project_root: &str, filename: &str, hash: &str) {
let stylesheet = StyleSheet::parse(
diff --git a/src/rules/container.rs b/src/rules/container.rs
index e08a824e..a911d33b 100644
--- a/src/rules/container.rs
+++ b/src/rules/container.rs
@@ -268,7 +268,15 @@ impl<'i> ToCss for ContainerName<'i> {
where
W: std::fmt::Write,
{
- self.0.to_css(dest)
+ // Container name should not be hashed
+ // https://github.com/vercel/next.js/issues/71233
+ self.0.to_css_with_options(
+ dest,
+ match &dest.css_module {
+ Some(css_module) => css_module.config.container,
+ None => false,
+ },
+ )
}
}
From 701297679084bfe594ed0992bf9ce98c56c5e7c5 Mon Sep 17 00:00:00 2001
From: Dylan Piercey
Date: Sun, 3 Nov 2024 13:22:56 -0700
Subject: [PATCH 033/137] chore: update help command docs (#812)
---
website/pages/docs.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/website/pages/docs.md b/website/pages/docs.md
index 5e28095b..3e818f61 100644
--- a/website/pages/docs.md
+++ b/website/pages/docs.md
@@ -164,7 +164,7 @@ Then, you can run the `lightningcss` command via `npx`, `yarn`, or by setting up
To see all of the available options, use the `--help` argument:
```shell
-npx lightningcss --help
+npx lightningcss-cli --help
```
## Error recovery
From c82e7d7a6e47d43dd72e812548add4015f5eeb0a Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 12:36:43 -0800
Subject: [PATCH 034/137] Update TS definitions
---
node/index.d.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/node/index.d.ts b/node/index.d.ts
index 334afc00..a583397d 100644
--- a/node/index.d.ts
+++ b/node/index.d.ts
@@ -309,6 +309,8 @@ export interface CSSModulesConfig {
animation?: boolean,
/** Whether to enable hashing for CSS grid identifiers. */
grid?: boolean,
+ /** Whether to enable hashing for `@container` names. */
+ container?: boolean,
/** Whether to enable hashing for custom identifiers. */
customIdents?: boolean,
/** Whether to require at least one class or id selector in each rule. */
From f6b033ffed5f528993607b83c5d015389dedd209 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 12:46:52 -0800
Subject: [PATCH 035/137] Update browser compat data
---
package.json | 7 ++--
scripts/build-prefixes.js | 1 +
src/compat.rs | 68 +++++++++++++++++++--------------------
src/prefixes.rs | 34 ++++++++++----------
yarn.lock | 21 +++++-------
5 files changed, 64 insertions(+), 67 deletions(-)
diff --git a/package.json b/package.json
index d6eed968..c0a03b84 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.5.51",
+ "@mdn/browser-compat-data": "~5.6.12",
"@napi-rs/cli": "^2.14.0",
"autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001660",
+ "caniuse-lite": "^1.0.30001677",
"codemirror": "^6.0.1",
"cssnano": "^5.0.8",
"esbuild": "^0.19.8",
@@ -78,7 +78,8 @@
"uvu": "^0.5.6"
},
"resolutions": {
- "lightningcss": "link:."
+ "lightningcss": "link:.",
+ "caniuse-lite": "^1.0.30001677"
},
"scripts": {
"prepare": "patch-package",
diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js
index 8fc83ca2..0c475f42 100644
--- a/scripts/build-prefixes.js
+++ b/scripts/build-prefixes.js
@@ -25,6 +25,7 @@ const MDN_BROWSER_MAPPING = {
firefox_android: 'firefox',
opera_android: 'opera',
safari_ios: 'ios_saf',
+ webview_ios: 'ios_saf',
samsunginternet_android: 'samsung',
webview_android: 'android',
oculus: null,
diff --git a/src/compat.rs b/src/compat.rs
index 339c8754..b62ab61b 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -445,7 +445,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -537,7 +537,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -582,7 +582,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -627,7 +627,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -717,7 +717,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -762,7 +762,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -807,7 +807,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -899,7 +899,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -944,7 +944,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1008,23 +1008,13 @@ impl Feature {
return false;
}
}
- if let Some(version) = browsers.safari {
- if version < 721152 {
- return false;
- }
- }
if let Some(version) = browsers.opera {
if version < 4718592 {
return false;
}
}
- if let Some(version) = browsers.ios_saf {
- if version < 721664 {
- return false;
- }
- }
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1033,7 +1023,7 @@ impl Feature {
return false;
}
}
- if browsers.ie.is_some() {
+ if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
return false;
}
}
@@ -1069,7 +1059,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1159,7 +1149,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1204,7 +1194,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1254,7 +1244,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1341,7 +1331,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1386,7 +1376,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1431,7 +1421,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1471,7 +1461,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1516,7 +1506,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1561,7 +1551,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -1628,7 +1618,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8388608 {
+ if version < 8519680 {
return false;
}
}
@@ -2773,6 +2763,16 @@ impl Feature {
return false;
}
}
+ if let Some(version) = browsers.safari {
+ if version < 1048576 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.ios_saf {
+ if version < 1048576 {
+ return false;
+ }
+ }
if let Some(version) = browsers.samsung {
if version < 655360 {
return false;
@@ -2783,7 +2783,7 @@ impl Feature {
return false;
}
}
- if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
+ if browsers.ie.is_some() {
return false;
}
}
diff --git a/src/prefixes.rs b/src/prefixes.rs
index b712ddae..c967bdc6 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -1190,17 +1190,17 @@ impl Feature {
}
Feature::Fill | Feature::FillAvailable => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8519680 {
+ if version >= 1441792 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8323072 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8323072 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1269,7 +1269,7 @@ impl Feature {
}
Feature::Stretch => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8519680 {
+ if version >= 1441792 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1279,12 +1279,12 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8323072 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8323072 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1516,18 +1516,18 @@ impl Feature {
}
}
Feature::BoxDecorationBreak => {
- if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8519680 {
+ if let Some(version) = browsers.android {
+ if version >= 263168 && version <= 263171 {
prefixes |= VendorPrefix::WebKit;
}
}
- if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8323072 {
+ if let Some(version) = browsers.chrome {
+ if version >= 1441792 && version <= 8454144 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8323072 {
+ if version >= 5177344 && version <= 8454144 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1919,17 +1919,17 @@ impl Feature {
}
Feature::CrossFade => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8519680 {
+ if version >= 1114112 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8323072 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8323072 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2154,17 +2154,17 @@ impl Feature {
}
Feature::PrintColorAdjust | Feature::ColorAdjust => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8519680 {
+ if version >= 1114112 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8323072 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8323072 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index 69f27f64..0b27e80b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -454,10 +454,10 @@
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
-"@mdn/browser-compat-data@~5.5.51":
- version "5.5.51"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.5.51.tgz#49c563e5b46500a987b57f46bde1b0b3343b7039"
- integrity sha512-17L3+/oqX+sgSyucNKSipri1LkI/d8pwPQI4Vv2ejRVZLZr1WGxcEGBnglqFhdlislQBceJiHAdQnWEE+YJE3A==
+"@mdn/browser-compat-data@~5.6.12":
+ version "5.6.12"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.12.tgz#ac3e1855c2387334bbfdb2b6249dd95c9d9c2b70"
+ integrity sha512-W/Km+GFczwpoimaXbtHYdjK26VHGszOEZ9EnIyLS2E65x6LEZs7r0FovR/XSkzgNau95sTxI3JfFKQFLIJE7EQ==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.0"
@@ -1347,15 +1347,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646:
- version "1.0.30001649"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992"
- integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==
-
-caniuse-lite@^1.0.30001660:
- version "1.0.30001660"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355"
- integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677:
+ version "1.0.30001677"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
+ integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
chalk@^2.0.0:
version "2.4.2"
From 8a67583105757e4a25378d65d243b87a345b2c2d Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 12:51:50 -0800
Subject: [PATCH 036/137] v1.28.0
---
Cargo.lock | 4 ++--
Cargo.toml | 24 ++++++++++++++++++------
napi/Cargo.toml | 13 ++++++++++---
node/Cargo.toml | 9 +++++++--
package.json | 2 +-
selectors/Cargo.toml | 2 +-
6 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 2769d0c3..9367e100 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -787,7 +787,7 @@ dependencies = [
[[package]]
name = "lightningcss-napi"
-version = "0.3.0"
+version = "0.4.0"
dependencies = [
"crossbeam-channel",
"cssparser",
@@ -975,7 +975,7 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
[[package]]
name = "parcel_selectors"
-version = "0.27.0"
+version = "0.28.0"
dependencies = [
"bitflags 2.4.1",
"cssparser",
diff --git a/Cargo.toml b/Cargo.toml
index 7b1cb511..c9545e94 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@ members = [
"c",
"derive",
"static-self",
- "static-self-derive"
+ "static-self-derive",
]
[package]
@@ -16,7 +16,7 @@ version = "1.0.0-alpha.59"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
-keywords = [ "CSS", "minifier", "Parcel" ]
+keywords = ["CSS", "minifier", "Parcel"]
repository = "https://github.com/parcel-bundler/lightningcss"
[package.metadata.docs.rs]
@@ -41,17 +41,27 @@ cli = ["atty", "clap", "serde_json", "browserslist", "jemallocator"]
grid = []
jsonschema = ["schemars", "serde", "parcel_selectors/jsonschema"]
nodejs = ["dep:serde"]
-serde = ["dep:serde", "smallvec/serde", "cssparser/serde", "parcel_selectors/serde", "into_owned"]
+serde = [
+ "dep:serde",
+ "smallvec/serde",
+ "cssparser/serde",
+ "parcel_selectors/serde",
+ "into_owned",
+]
sourcemap = ["parcel_sourcemap"]
visitor = []
-into_owned = ["static-self", "static-self/smallvec", "parcel_selectors/into_owned"]
+into_owned = [
+ "static-self",
+ "static-self/smallvec",
+ "parcel_selectors/into_owned",
+]
substitute_variables = ["visitor", "into_owned"]
[dependencies]
serde = { version = "1.0.201", features = ["derive"], optional = true }
cssparser = "0.33.0"
cssparser-color = "0.1.0"
-parcel_selectors = { version = "0.27.0", path = "./selectors" }
+parcel_selectors = { version = "0.28.0", path = "./selectors" }
itertools = "0.10.1"
smallvec = { version = "1.7.0", features = ["union"] }
bitflags = "2.2.1"
@@ -74,7 +84,9 @@ schemars = { version = "0.8.19", features = ["smallvec"], optional = true }
static-self = { version = "0.1.0", path = "static-self", optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
-jemallocator = { version = "0.3.2", features = ["disable_initial_exec_tls"], optional = true }
+jemallocator = { version = "0.3.2", features = [
+ "disable_initial_exec_tls",
+], optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["custom"], default-features = false }
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index 8807f557..83134546 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -1,7 +1,7 @@
[package]
authors = ["Devon Govett "]
name = "lightningcss-napi"
-version = "0.3.0"
+version = "0.4.0"
description = "Node-API bindings for Lightning CSS"
license = "MPL-2.0"
repository = "https://github.com/parcel-bundler/lightningcss"
@@ -16,10 +16,17 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.56", path = "../", features = ["nodejs", "serde"] }
+lightningcss = { version = "1.0.0-alpha.56", path = "../", features = [
+ "nodejs",
+ "serde",
+] }
parcel_sourcemap = { version = "2.1.1", features = ["json"] }
serde-detach = "0.0.1"
smallvec = { version = "1.7.0", features = ["union"] }
-napi = {version = "2", default-features = false, features = ["napi4", "napi5", "serde-json"]}
+napi = { version = "2", default-features = false, features = [
+ "napi4",
+ "napi5",
+ "serde-json",
+] }
crossbeam-channel = { version = "0.5.6", optional = true }
rayon = { version = "1.5.1", optional = true }
diff --git a/node/Cargo.toml b/node/Cargo.toml
index aacc0f45..f4713da7 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -9,8 +9,13 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
-lightningcss-napi = { version = "0.3.0", path = "../napi", features = ["bundler", "visitor"] }
-napi = {version = "2.15.4", default-features = false, features = ["compat-mode"]}
+lightningcss-napi = { version = "0.4.0", path = "../napi", features = [
+ "bundler",
+ "visitor",
+] }
+napi = { version = "2.15.4", default-features = false, features = [
+ "compat-mode",
+] }
napi-derive = "2"
[target.'cfg(target_os = "macos")'.dependencies]
diff --git a/package.json b/package.json
index c0a03b84..9594e521 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.27.0",
+ "version": "1.28.0",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
diff --git a/selectors/Cargo.toml b/selectors/Cargo.toml
index 32c6a891..90a2aab3 100644
--- a/selectors/Cargo.toml
+++ b/selectors/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "parcel_selectors"
-version = "0.27.0"
+version = "0.28.0"
authors = ["The Servo Project Developers"]
documentation = "https://docs.rs/parcel_selectors/"
description = "CSS Selectors matching for Rust - forked for lightningcss"
From a3390fd4140ca87f5035595d22bc9357cf72177e Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 3 Nov 2024 14:38:01 -0800
Subject: [PATCH 037/137] Fix cargo versions
---
Cargo.lock | 2 +-
Cargo.toml | 2 +-
napi/Cargo.toml | 2 +-
package.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 9367e100..731bd3d4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -741,7 +741,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.59"
+version = "1.0.0-alpha.60"
dependencies = [
"ahash 0.8.7",
"assert_cmd",
diff --git a/Cargo.toml b/Cargo.toml
index c9545e94..3f4d5c38 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.59"
+version = "1.0.0-alpha.60"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index 83134546..3d964313 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.56", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.60", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/package.json b/package.json
index 9594e521..237ea5f2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.28.0",
+ "version": "1.28.1",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
From 78f2fc479537ec68a7481e33db571385cc21cdb7 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 24 Nov 2024 20:00:48 -0800
Subject: [PATCH 038/137] Fix mapping original name from source maps
---
src/printer.rs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/printer.rs b/src/printer.rs
index 235a8eab..a51c1491 100644
--- a/src/printer.rs
+++ b/src/printer.rs
@@ -241,10 +241,11 @@ impl<'a, 'b, 'c, W: std::fmt::Write + Sized> Printer<'a, 'b, 'c, W> {
if let Some(orig) = mapping.original {
let sources_len = map.get_sources().len();
let source_index = map.add_source(sm.get_source(orig.source).unwrap());
+ let name = orig.name.map(|name| map.add_name(sm.get_name(name).unwrap()));
original.original_line = orig.original_line;
original.original_column = orig.original_column;
original.source = source_index;
- original.name = orig.name;
+ original.name = name;
if map.get_sources().len() > sources_len {
let content = sm.get_source_content(orig.source).unwrap().to_owned();
From 33265a2d7d5530b662ef834514419ccb6f7e6078 Mon Sep 17 00:00:00 2001
From: Robin Malfait
Date: Mon, 25 Nov 2024 05:49:54 +0100
Subject: [PATCH 039/137] Fix duplicate `-webkit-backdrop-filter` output (#850)
* add failing test
Co-authored-by: LeoniePhiline <22329650+LeoniePhiline@users.noreply.github.com>
If you have the following CSS:
```css
.foo {
transition-property: backdrop-filter;
}
```
Then the `backdrop-filter` will be prefixed such that it looks like
this:
```css
.foo {
transition-property: -webkit-backdrop-filter, backdrop-filter;
}
```
However, if you already have `-webkit-backdrop-filter` in the list:
```css
.foo {
transition-property: -webkit-backdrop-filter, backdrop-filter;
}
```
Then it compiles to:
```css
.foo {
transition-property: -webkit-backdrop-filter, -webkit-backdrop-filter, backdrop-filter;
}
```
This is not what we want. So in this case, whenever a non-prefixed
property is found in the list (`backdrop-filter`), then we can remove or
ignore all prefixed values. Once we are printing the CSS back, the
`backdrop-filter` will print the prefixed version as well.
```css
.foo {
transition-property: -webkit-backdrop-filter, backdrop-filter;
}
```
---------
Co-authored-by: LeoniePhiline <22329650+LeoniePhiline@users.noreply.github.com>
Co-authored-by: Devon Govett
---
src/lib.rs | 71 ++++++++++++++++++++++++++++++++++++
src/properties/transition.rs | 24 +++++++++++-
2 files changed, 93 insertions(+), 2 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 3abb7e32..5f5ea483 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -11302,6 +11302,77 @@ mod tests {
..Browsers::default()
},
);
+ prefix_test(
+ r#"
+ .foo {
+ transition-property: -webkit-backdrop-filter, backdrop-filter;
+ }
+ .bar {
+ transition-property: backdrop-filter;
+ }
+ .baz {
+ transition-property: -webkit-backdrop-filter;
+ }
+ "#,
+ indoc! {r#"
+ .foo, .bar {
+ transition-property: -webkit-backdrop-filter, backdrop-filter;
+ }
+
+ .baz {
+ transition-property: -webkit-backdrop-filter;
+ }
+ "#
+ },
+ Browsers {
+ safari: Some(15 << 16),
+ ..Browsers::default()
+ },
+ );
+ prefix_test(
+ r#"
+ .foo {
+ transition-property: -webkit-border-radius, -webkit-border-radius, -moz-border-radius;
+ }
+ "#,
+ indoc! {r#"
+ .foo {
+ transition-property: -webkit-border-radius, -moz-border-radius;
+ }
+ "#
+ },
+ Browsers {
+ safari: Some(15 << 16),
+ ..Browsers::default()
+ },
+ );
+ prefix_test(
+ r#"
+ .foo {
+ transition: -webkit-backdrop-filter, backdrop-filter;
+ }
+ .bar {
+ transition: backdrop-filter;
+ }
+ .baz {
+ transition: -webkit-backdrop-filter;
+ }
+ "#,
+ indoc! {r#"
+ .foo, .bar {
+ transition: -webkit-backdrop-filter, backdrop-filter;
+ }
+
+ .baz {
+ transition: -webkit-backdrop-filter;
+ }
+ "#
+ },
+ Browsers {
+ safari: Some(15 << 16),
+ ..Browsers::default()
+ },
+ );
}
#[test]
diff --git a/src/properties/transition.rs b/src/properties/transition.rs
index 5890cbb3..be95d5ab 100644
--- a/src/properties/transition.rs
+++ b/src/properties/transition.rs
@@ -154,12 +154,15 @@ impl<'i> PropertyHandler<'i> for TransitionHandler<'i> {
}
match property {
- TransitionProperty(val, vp) => property!(TransitionProperty, properties, val, vp),
+ TransitionProperty(val, vp) => {
+ let merged_values = merge_properties(val.iter());
+ property!(TransitionProperty, properties, &merged_values, vp);
+ }
TransitionDuration(val, vp) => property!(TransitionDuration, durations, val, vp),
TransitionDelay(val, vp) => property!(TransitionDelay, delays, val, vp),
TransitionTimingFunction(val, vp) => property!(TransitionTimingFunction, timing_functions, val, vp),
Transition(val, vp) => {
- let properties: SmallVec<[PropertyId; 1]> = val.iter().map(|b| b.property.clone()).collect();
+ let properties: SmallVec<[PropertyId; 1]> = merge_properties(val.iter().map(|b| &b.property));
maybe_flush!(properties, &properties, vp);
let durations: SmallVec<[Time; 1]> = val.iter().map(|b| b.duration.clone()).collect();
@@ -328,6 +331,23 @@ fn is_transition_property(property_id: &PropertyId) -> bool {
}
}
+fn merge_properties<'i: 'a, 'a>(val: impl Iterator- <'i>>) -> SmallVec<[PropertyId<'i>; 1]> {
+ let mut merged_values = SmallVec::<[PropertyId<'_>; 1]>::with_capacity(val.size_hint().1.unwrap_or(1));
+ for p in val {
+ let without_prefix = p.with_prefix(VendorPrefix::empty());
+ if let Some(idx) = merged_values
+ .iter()
+ .position(|c| c.with_prefix(VendorPrefix::empty()) == without_prefix)
+ {
+ merged_values[idx].add_prefix(p.prefix());
+ } else {
+ merged_values.push(p.clone());
+ }
+ }
+
+ merged_values
+}
+
fn expand_properties<'i>(
properties: &mut SmallVec<[PropertyId<'i>; 1]>,
context: &mut PropertyHandlerContext,
From 4159bc507baa1ec438f89b20bdf9e8e74c7f48e4 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 24 Nov 2024 20:52:28 -0800
Subject: [PATCH 040/137] Bump browser compat data
---
package.json | 4 ++--
src/compat.rs | 44 +++++++++++++++++++++----------------------
src/prefixes.rs | 50 +++++++++++++++++++++++++------------------------
yarn.lock | 13 +++++++++----
4 files changed, 59 insertions(+), 52 deletions(-)
diff --git a/package.json b/package.json
index 237ea5f2..71d5c39d 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.6.12",
+ "@mdn/browser-compat-data": "~5.6.18",
"@napi-rs/cli": "^2.14.0",
"autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001677",
+ "caniuse-lite": "^1.0.30001684",
"codemirror": "^6.0.1",
"cssnano": "^5.0.8",
"esbuild": "^0.19.8",
diff --git a/src/compat.rs b/src/compat.rs
index b62ab61b..911b2c86 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -445,7 +445,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -537,7 +537,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -582,7 +582,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -627,7 +627,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -717,7 +717,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -762,7 +762,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -807,7 +807,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -899,7 +899,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -944,7 +944,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1014,7 +1014,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1059,7 +1059,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1149,7 +1149,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1194,7 +1194,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1244,7 +1244,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1331,7 +1331,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1376,7 +1376,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1421,7 +1421,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1461,7 +1461,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1506,7 +1506,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1551,7 +1551,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
@@ -1618,7 +1618,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8519680 {
+ if version < 8585216 {
return false;
}
}
diff --git a/src/prefixes.rs b/src/prefixes.rs
index c967bdc6..34a97e1f 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 197120 {
+ if version >= 197120 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -682,7 +682,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 196864 {
+ if version >= 196864 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1190,17 +1190,17 @@ impl Feature {
}
Feature::Fill | Feature::FillAvailable => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 {
+ if version >= 1441792 && version <= 8716288 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1269,7 +1269,7 @@ impl Feature {
}
Feature::Stretch => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 {
+ if version >= 1441792 && version <= 8716288 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1279,17 +1279,17 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 {
+ if version >= 458752 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1299,7 +1299,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 458752 {
+ if version >= 458752 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1374,7 +1374,7 @@ impl Feature {
}
Feature::TextDecorationSkip | Feature::TextDecorationSkipInk => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 {
+ if version >= 524288 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1386,12 +1386,12 @@ impl Feature {
}
Feature::TextDecoration => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 {
+ if version >= 524288 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.safari {
- if version >= 524288 {
+ if version >= 524288 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1414,8 +1414,10 @@ impl Feature {
}
}
Feature::TextSizeAdjust => {
- if browsers.firefox.is_some() {
- prefixes |= VendorPrefix::Moz;
+ if let Some(version) = browsers.firefox {
+ if version <= 8519680 {
+ prefixes |= VendorPrefix::Moz;
+ }
}
if let Some(version) = browsers.edge {
if version >= 786432 && version <= 1179648 {
@@ -1428,7 +1430,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 327680 {
+ if version >= 327680 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1532,7 +1534,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 {
+ if version >= 458752 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1542,7 +1544,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 393472 {
+ if version >= 393472 && version <= 1179904 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1919,17 +1921,17 @@ impl Feature {
}
Feature::CrossFade => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 {
+ if version >= 1114112 && version <= 8716288 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2154,17 +2156,17 @@ impl Feature {
}
Feature::PrintColorAdjust | Feature::ColorAdjust => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 {
+ if version >= 1114112 && version <= 8716288 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 {
+ if version >= 263168 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 {
+ if version >= 5177344 && version <= 8519680 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index 0b27e80b..9186ec11 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -454,10 +454,10 @@
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
-"@mdn/browser-compat-data@~5.6.12":
- version "5.6.12"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.12.tgz#ac3e1855c2387334bbfdb2b6249dd95c9d9c2b70"
- integrity sha512-W/Km+GFczwpoimaXbtHYdjK26VHGszOEZ9EnIyLS2E65x6LEZs7r0FovR/XSkzgNau95sTxI3JfFKQFLIJE7EQ==
+"@mdn/browser-compat-data@~5.6.18":
+ version "5.6.18"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.18.tgz#62bfd9f7a646e54e68b3739cb34bcf508e699410"
+ integrity sha512-WCQcQGyydquw7NXPL2NopMCgmUvIQDG7KM/IGR4PMJSDH5SHZKXUDEF6rdpGWj0MtcjQseOCl/hjzYzj0fMMeA==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.0"
@@ -1352,6 +1352,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
+caniuse-lite@^1.0.30001684:
+ version "1.0.30001684"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz#0eca437bab7d5f03452ff0ef9de8299be6b08e16"
+ integrity sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==
+
chalk@^2.0.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
From d4eec3593fe3c2244693d9e11af3547d6651ce57 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 24 Nov 2024 20:58:35 -0800
Subject: [PATCH 041/137] Ensure consistent order of custom properties with all
property
Fixes #855
---
Cargo.lock | 1 +
Cargo.toml | 1 +
src/declaration.rs | 6 +++---
src/lib.rs | 4 ++++
4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 731bd3d4..3866b6f1 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -756,6 +756,7 @@ dependencies = [
"dashmap",
"data-encoding",
"getrandom",
+ "indexmap 2.2.6",
"indoc",
"itertools 0.10.5",
"jemallocator",
diff --git a/Cargo.toml b/Cargo.toml
index 3f4d5c38..c9f95586 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -72,6 +72,7 @@ const-str = "0.3.1"
pathdiff = "0.2.1"
ahash = "0.8.7"
paste = "1.0.12"
+indexmap = "2.2.6"
# CLI deps
atty = { version = "0.2", optional = true }
clap = { version = "3.0.6", features = ["derive"], optional = true }
diff --git a/src/declaration.rs b/src/declaration.rs
index da97e37d..2b211999 100644
--- a/src/declaration.rs
+++ b/src/declaration.rs
@@ -1,7 +1,6 @@
//! CSS declarations.
use std::borrow::Cow;
-use std::collections::HashMap;
use std::ops::Range;
use crate::context::{DeclarationContext, PropertyHandlerContext};
@@ -41,6 +40,7 @@ use crate::values::string::CowArcStr;
#[cfg(feature = "visitor")]
use crate::visitor::Visit;
use cssparser::*;
+use indexmap::IndexMap;
/// A CSS declaration block.
///
@@ -518,7 +518,7 @@ pub(crate) struct DeclarationHandler<'i> {
prefix: PrefixHandler,
direction: Option,
unicode_bidi: Option,
- custom_properties: HashMap<'i>, usize>,
+ custom_properties: IndexMap<'i>, usize>,
decls: DeclarationList<'i>,
}
@@ -609,7 +609,7 @@ impl<'i> DeclarationHandler<'i> {
direction: self.direction.clone(),
..Default::default()
};
- for (key, index) in self.custom_properties.drain() {
+ for (key, index) in self.custom_properties.drain(..) {
handler.custom_properties.insert(key, handler.decls.len());
handler.decls.push(self.decls[index].clone());
}
diff --git a/src/lib.rs b/src/lib.rs
index 5f5ea483..53a1811e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -28355,5 +28355,9 @@ mod tests {
".foo { all: unset; background: var(--foo); }",
".foo{all:unset;background:var(--foo)}",
);
+ minify_test(
+ ".foo {--bar:currentcolor; --foo:1.1em; all:unset}",
+ ".foo{--bar:currentcolor;--foo:1.1em;all:unset}",
+ );
}
}
From 9b2e8bbe732d7c101272ddab03ac21b88bf55c4a Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 24 Nov 2024 21:03:38 -0800
Subject: [PATCH 042/137] v1.28.2
---
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
napi/Cargo.toml | 4 ++--
node/Cargo.toml | 2 +-
package.json | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 3866b6f1..cf4e300e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -741,7 +741,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.60"
+version = "1.0.0-alpha.61"
dependencies = [
"ahash 0.8.7",
"assert_cmd",
@@ -788,7 +788,7 @@ dependencies = [
[[package]]
name = "lightningcss-napi"
-version = "0.4.0"
+version = "0.4.1"
dependencies = [
"crossbeam-channel",
"cssparser",
diff --git a/Cargo.toml b/Cargo.toml
index c9f95586..0f97acaf 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.60"
+version = "1.0.0-alpha.61"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index 3d964313..e3ec7375 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -1,7 +1,7 @@
[package]
authors = ["Devon Govett "]
name = "lightningcss-napi"
-version = "0.4.0"
+version = "0.4.1"
description = "Node-API bindings for Lightning CSS"
license = "MPL-2.0"
repository = "https://github.com/parcel-bundler/lightningcss"
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.60", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.61", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/node/Cargo.toml b/node/Cargo.toml
index f4713da7..5b54465a 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -9,7 +9,7 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
-lightningcss-napi = { version = "0.4.0", path = "../napi", features = [
+lightningcss-napi = { version = "0.4.1", path = "../napi", features = [
"bundler",
"visitor",
] }
diff --git a/package.json b/package.json
index 71d5c39d..cc16bd24 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.28.1",
+ "version": "1.28.2",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
From 304389600fb655c5b1af55f1946518e9b755b860 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 12:08:50 -0500
Subject: [PATCH 043/137] Add feature flag for light-dark()
---
node/flags.js | 3 ++-
node/targets.d.ts | 3 ++-
scripts/build-prefixes.js | 3 ++-
src/lib.rs | 23 +++++++++++++++++++++++
src/properties/custom.rs | 2 +-
src/properties/ui.rs | 5 ++---
src/targets.rs | 3 ++-
src/values/color.rs | 2 +-
website/pages/transpilation.md | 3 ++-
9 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/node/flags.js b/node/flags.js
index 1759b4d9..a636a204 100644
--- a/node/flags.js
+++ b/node/flags.js
@@ -21,7 +21,8 @@ exports.Features = {
DoublePositionGradients: 131072,
VendorPrefixes: 262144,
LogicalProperties: 524288,
+ LightDark: 1048576,
Selectors: 31,
MediaQueries: 448,
- Colors: 64512,
+ Colors: 1113088,
};
diff --git a/node/targets.d.ts b/node/targets.d.ts
index c962f229..ccc7c95f 100644
--- a/node/targets.d.ts
+++ b/node/targets.d.ts
@@ -33,7 +33,8 @@ export const Features: {
DoublePositionGradients: 131072,
VendorPrefixes: 262144,
LogicalProperties: 524288,
+ LightDark: 1048576,
Selectors: 31,
MediaQueries: 448,
- Colors: 64512,
+ Colors: 1113088,
};
diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js
index 0c475f42..0834ecb2 100644
--- a/scripts/build-prefixes.js
+++ b/scripts/build-prefixes.js
@@ -465,9 +465,10 @@ let flags = [
'DoublePositionGradients',
'VendorPrefixes',
'LogicalProperties',
+ 'LightDark',
['Selectors', ['Nesting', 'NotSelectorList', 'DirSelector', 'LangSelectorList', 'IsSelector']],
['MediaQueries', ['MediaIntervalSyntax', 'MediaRangeSyntax', 'CustomMediaQueries']],
- ['Colors', ['ColorFunction', 'OklabColors', 'LabColors', 'P3Colors', 'HexAlphaColors', 'SpaceSeparatedColorNotation']],
+ ['Colors', ['ColorFunction', 'OklabColors', 'LabColors', 'P3Colors', 'HexAlphaColors', 'SpaceSeparatedColorNotation', 'LightDark']],
];
let enumify = (f) => f.replace(/^@([a-z])/, (_, x) => 'At' + x.toUpperCase()).replace(/^::([a-z])/, (_, x) => 'PseudoElement' + x.toUpperCase()).replace(/^:([a-z])/, (_, x) => 'PseudoClass' + x.toUpperCase()).replace(/(^|-)([a-z])/g, (_, a, x) => x.toUpperCase())
diff --git a/src/lib.rs b/src/lib.rs
index 53a1811e..92c877a2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -28323,6 +28323,29 @@ mod tests {
..Browsers::default()
},
);
+ nesting_test_with_targets(
+ r#"
+ .foo { color-scheme: light; }
+ .bar { color: light-dark(red, green); }
+ "#,
+ indoc! {r#"
+ .foo {
+ color-scheme: light;
+ }
+
+ .bar {
+ color: light-dark(red, green);
+ }
+ "#},
+ Targets {
+ browsers: Some(Browsers {
+ safari: Some(13 << 16),
+ ..Browsers::default()
+ }),
+ include: Features::empty(),
+ exclude: Features::LightDark,
+ },
+ );
}
#[test]
diff --git a/src/properties/custom.rs b/src/properties/custom.rs
index 40b522e8..702fb724 100644
--- a/src/properties/custom.rs
+++ b/src/properties/custom.rs
@@ -1653,7 +1653,7 @@ impl<'i> UnresolvedColor<'i> {
dest.write_char(')')
}
UnresolvedColor::LightDark { light, dark } => {
- if !dest.targets.is_compatible(crate::compat::Feature::LightDark) {
+ if should_compile!(dest.targets, LightDark) {
dest.write_str("var(--lightningcss-light")?;
dest.delim(',', false)?;
light.to_css(dest, is_custom_property)?;
diff --git a/src/properties/ui.rs b/src/properties/ui.rs
index 11e1eade..9b0bb714 100644
--- a/src/properties/ui.rs
+++ b/src/properties/ui.rs
@@ -1,13 +1,12 @@
//! CSS properties related to user interface.
-use crate::compat::Feature;
use crate::context::PropertyHandlerContext;
use crate::declaration::{DeclarationBlock, DeclarationList};
use crate::error::{ParserError, PrinterError};
use crate::macros::{define_shorthand, enum_property, shorthand_property};
use crate::printer::Printer;
use crate::properties::{Property, PropertyId};
-use crate::targets::{Browsers, Targets};
+use crate::targets::{should_compile, Browsers, Targets};
use crate::traits::{FallbackValues, IsCompatible, Parse, PropertyHandler, Shorthand, ToCss};
use crate::values::color::CssColor;
use crate::values::number::CSSNumber;
@@ -548,7 +547,7 @@ impl<'i> PropertyHandler<'i> for ColorSchemeHandler {
) -> bool {
match property {
Property::ColorScheme(color_scheme) => {
- if !context.targets.is_compatible(Feature::LightDark) {
+ if should_compile!(context.targets, LightDark) {
if color_scheme.contains(ColorScheme::Light) {
dest.push(define_var("--lightningcss-light", Token::Ident("initial".into())));
dest.push(define_var("--lightningcss-dark", Token::WhiteSpace(" ".into())));
diff --git a/src/targets.rs b/src/targets.rs
index 4d44ddae..6c1f429a 100644
--- a/src/targets.rs
+++ b/src/targets.rs
@@ -158,9 +158,10 @@ bitflags! {
const DoublePositionGradients = 1 << 17;
const VendorPrefixes = 1 << 18;
const LogicalProperties = 1 << 19;
+ const LightDark = 1 << 20;
const Selectors = Self::Nesting.bits() | Self::NotSelectorList.bits() | Self::DirSelector.bits() | Self::LangSelectorList.bits() | Self::IsSelector.bits();
const MediaQueries = Self::MediaIntervalSyntax.bits() | Self::MediaRangeSyntax.bits() | Self::CustomMediaQueries.bits();
- const Colors = Self::ColorFunction.bits() | Self::OklabColors.bits() | Self::LabColors.bits() | Self::P3Colors.bits() | Self::HexAlphaColors.bits() | Self::SpaceSeparatedColorNotation.bits();
+ const Colors = Self::ColorFunction.bits() | Self::OklabColors.bits() | Self::LabColors.bits() | Self::P3Colors.bits() | Self::HexAlphaColors.bits() | Self::SpaceSeparatedColorNotation.bits() | Self::LightDark.bits();
}
}
diff --git a/src/values/color.rs b/src/values/color.rs
index b65d16a3..093d5c12 100644
--- a/src/values/color.rs
+++ b/src/values/color.rs
@@ -595,7 +595,7 @@ impl ToCss for CssColor {
CssColor::from(srgb).to_css(dest)
}
CssColor::LightDark(light, dark) => {
- if !dest.targets.is_compatible(Feature::LightDark) {
+ if should_compile!(dest.targets, LightDark) {
dest.write_str("var(--lightningcss-light")?;
dest.delim(',', false)?;
light.to_css(dest)?;
diff --git a/website/pages/transpilation.md b/website/pages/transpilation.md
index abf0ef86..12f69fc7 100644
--- a/website/pages/transpilation.md
+++ b/website/pages/transpilation.md
@@ -108,13 +108,14 @@ Here is a full list of available flags, described in the sections below:
* `P3Colors`
* `HexAlphaColors`
* `SpaceSeparatedColorNotation`
+* `LightDark`
* `FontFamilySystemUi`
* `DoublePositionGradients`
* `VendorPrefixes`
* `LogicalProperties`
* `Selectors` – shorthand for `Nesting | NotSelectorList | DirSelector | LangSelectorList | IsSelector`
* `MediaQueries` – shorthand for `MediaIntervalSyntax | MediaRangeSyntax | CustomMediaQueries`
-* `Colors` – shorthand for `ColorFunction | OklabColors | LabColors | P3Colors | HexAlphaColors | SpaceSeparatedColorNotation`
+* `Colors` – shorthand for `ColorFunction | OklabColors | LabColors | P3Colors | HexAlphaColors | SpaceSeparatedColorNotation | LightDark`
From 43707c31547b66c3c611cda393ce7fe5d07090d0 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 12:29:08 -0500
Subject: [PATCH 044/137] Update Rust dependencies
fixes #874
---
Cargo.lock | 626 +++++++++++++++++++++++------------------------------
1 file changed, 273 insertions(+), 353 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index cf4e300e..c93409d3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "ahash"
-version = "0.7.7"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
dependencies = [
"getrandom",
"once_cell",
@@ -15,9 +15,9 @@ dependencies = [
[[package]]
name = "ahash"
-version = "0.8.7"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
dependencies = [
"cfg-if",
"getrandom",
@@ -29,9 +29,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
@@ -53,20 +53,21 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.4"
+version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
[[package]]
name = "assert_cmd"
-version = "2.0.12"
+version = "2.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6"
+checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d"
dependencies = [
"anstyle",
"bstr",
"doc-comment",
- "predicates 3.0.4",
+ "libc",
+ "predicates 3.1.3",
"predicates-core",
"predicates-tree",
"wait-timeout",
@@ -74,14 +75,14 @@ dependencies = [
[[package]]
name = "assert_fs"
-version = "1.0.13"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f070617a68e5c2ed5d06ee8dd620ee18fb72b99f6c094bed34cf8ab07c875b48"
+checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674"
dependencies = [
"anstyle",
"doc-comment",
"globwalk",
- "predicates 3.0.4",
+ "predicates 3.1.3",
"predicates-core",
"predicates-tree",
"tempfile",
@@ -100,9 +101,9 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "base64-simd"
@@ -121,9 +122,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.4.1"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "bitvec"
@@ -143,10 +144,10 @@ version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdf0ca73de70c3da94e4194e4a01fe732378f55d47cf4c0588caab22a0dbfa14"
dependencies = [
- "ahash 0.8.7",
+ "ahash 0.8.11",
"chrono",
"either",
- "indexmap 2.2.6",
+ "indexmap 2.7.0",
"itertools 0.13.0",
"nom",
"once_cell",
@@ -157,9 +158,9 @@ dependencies = [
[[package]]
name = "bstr"
-version = "1.7.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019"
+checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8"
dependencies = [
"memchr",
"regex-automata",
@@ -168,15 +169,15 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.14.0"
+version = "3.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
[[package]]
name = "bytecheck"
-version = "0.6.11"
+version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627"
+checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2"
dependencies = [
"bytecheck_derive",
"ptr_meta",
@@ -185,15 +186,21 @@ dependencies = [
[[package]]
name = "bytecheck_derive"
-version = "0.6.11"
+version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61"
+checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
+[[package]]
+name = "bytes"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
+
[[package]]
name = "cbindgen"
version = "0.24.5"
@@ -215,11 +222,11 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.83"
+version = "1.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e"
dependencies = [
- "libc",
+ "shlex",
]
[[package]]
@@ -230,14 +237,14 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.38"
+version = "0.4.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
dependencies = [
"android-tzdata",
"iana-time-zone",
"num-traits",
- "windows-targets 0.52.6",
+ "windows-targets",
]
[[package]]
@@ -310,52 +317,43 @@ dependencies = [
[[package]]
name = "core-foundation-sys"
-version = "0.8.4"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "crossbeam-channel"
-version = "0.5.8"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
dependencies = [
- "cfg-if",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.3"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
- "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.9.15"
+version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
- "autocfg",
- "cfg-if",
"crossbeam-utils",
- "memoffset",
- "scopeguard",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.16"
+version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-dependencies = [
- "cfg-if",
-]
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "cssparser"
@@ -387,17 +385,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
name = "ctor"
-version = "0.2.7"
+version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad291aa74992b9b7a7e88c38acbbf6ad7e107f1d90ee8775b7bc1fc3394f485c"
+checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
dependencies = [
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
@@ -407,7 +405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.5",
"lock_api",
"once_cell",
"parking_lot_core",
@@ -415,9 +413,9 @@ dependencies = [
[[package]]
name = "data-encoding"
-version = "2.4.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
[[package]]
name = "data-url"
@@ -454,18 +452,18 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
[[package]]
name = "dtoa-short"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74"
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
dependencies = [
"dtoa",
]
[[package]]
name = "dyn-clone"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d"
+checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
[[package]]
name = "either"
@@ -481,9 +479,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-version = "0.3.6"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e"
+checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
dependencies = [
"libc",
"windows-sys",
@@ -491,9 +489,9 @@ dependencies = [
[[package]]
name = "fastrand"
-version = "2.0.1"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "float-cmp"
@@ -504,12 +502,6 @@ dependencies = [
"num-traits",
]
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
[[package]]
name = "fs_extra"
version = "1.3.0"
@@ -524,9 +516,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "getrandom"
-version = "0.2.10"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
@@ -535,24 +527,24 @@ dependencies = [
[[package]]
name = "globset"
-version = "0.4.13"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
+checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
dependencies = [
"aho-corasick",
"bstr",
- "fnv",
"log",
- "regex",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
name = "globwalk"
-version = "0.8.1"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc"
+checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
"ignore",
"walkdir",
]
@@ -563,14 +555,20 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
dependencies = [
- "ahash 0.7.7",
+ "ahash 0.7.8",
]
[[package]]
name = "hashbrown"
-version = "0.14.2"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "hashbrown"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
[[package]]
name = "heck"
@@ -589,9 +587,9 @@ dependencies = [
[[package]]
name = "iana-time-zone"
-version = "0.1.58"
+version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
@@ -612,17 +610,16 @@ dependencies = [
[[package]]
name = "ignore"
-version = "0.4.20"
+version = "0.4.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
+checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
dependencies = [
+ "crossbeam-deque",
"globset",
- "lazy_static",
"log",
"memchr",
- "regex",
+ "regex-automata",
"same-file",
- "thread_local",
"walkdir",
"winapi-util",
]
@@ -639,12 +636,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.2.6"
+version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f"
dependencies = [
"equivalent",
- "hashbrown 0.14.2",
+ "hashbrown 0.15.2",
"serde",
]
@@ -663,15 +660,6 @@ dependencies = [
"either",
]
-[[package]]
-name = "itertools"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
-dependencies = [
- "either",
-]
-
[[package]]
name = "itertools"
version = "0.13.0"
@@ -683,9 +671,9 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.9"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jemalloc-sys"
@@ -710,44 +698,45 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.65"
+version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7"
dependencies = [
+ "once_cell",
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
-version = "0.2.150"
+version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
[[package]]
name = "libloading"
-version = "0.8.1"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
- "windows-sys",
+ "windows-targets",
]
[[package]]
name = "lightningcss"
version = "1.0.0-alpha.61"
dependencies = [
- "ahash 0.8.7",
+ "ahash 0.8.11",
"assert_cmd",
"assert_fs",
"atty",
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"browserslist-rs",
"clap",
"const-str",
@@ -756,7 +745,7 @@ dependencies = [
"dashmap",
"data-encoding",
"getrandom",
- "indexmap 2.2.6",
+ "indexmap 2.7.0",
"indoc",
"itertools 0.10.5",
"jemallocator",
@@ -825,15 +814,15 @@ dependencies = [
[[package]]
name = "linux-raw-sys"
-version = "0.4.10"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [
"autocfg",
"scopeguard",
@@ -841,9 +830,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.20"
+version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "matches"
@@ -853,18 +842,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
[[package]]
name = "memchr"
-version = "2.6.4"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
-
-[[package]]
-name = "memoffset"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
-dependencies = [
- "autocfg",
-]
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "minimal-lexical"
@@ -874,11 +854,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "napi"
-version = "2.15.4"
+version = "2.16.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72e0dc78e0524286630914db66e31bad70160e379705a9ce92e0161ce2389d89"
+checksum = "214f07a80874bb96a8433b3cdfc84980d56c7b02e1a0d7ba4ba0db5cef785e2b"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"ctor",
"napi-derive",
"napi-sys",
@@ -895,23 +875,23 @@ checksum = "ebd4419172727423cf30351406c54f6cc1b354a2cfb4f1dba3e6cd07f6d5522b"
[[package]]
name = "napi-derive"
-version = "2.15.3"
+version = "2.16.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e56bd9f0bd84c1f138c5cb22bbf394f75d796b24dad689599ca94cf94e61cc21"
+checksum = "7cbe2585d8ac223f7d34f13701434b9d5f4eb9c332cccce8dee57ea18ab8ab0c"
dependencies = [
"cfg-if",
"convert_case",
"napi-derive-backend",
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
name = "napi-derive-backend"
-version = "1.0.61"
+version = "1.0.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d03b8f403a37007cad225039fc0323b961bb40d697eea744140920ebb689ff1d"
+checksum = "1639aaa9eeb76e91c6ae66da8ce3e89e921cd3885e99ec85f4abacae72fc91bf"
dependencies = [
"convert_case",
"once_cell",
@@ -919,14 +899,14 @@ dependencies = [
"quote",
"regex",
"semver",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
name = "napi-sys"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2503fa6af34dc83fb74888df8b22afe933b58d37daf7d80424b1c60c68196b8b"
+checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3"
dependencies = [
"libloading",
]
@@ -949,18 +929,18 @@ checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "num-traits"
-version = "0.2.17"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
-version = "1.19.0"
+version = "1.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "os_str_bytes"
@@ -978,7 +958,7 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
name = "parcel_selectors"
version = "0.28.0"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"cssparser",
"log",
"phf",
@@ -1007,28 +987,28 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
"redox_syscall",
"smallvec",
- "windows-targets 0.48.5",
+ "windows-targets",
]
[[package]]
name = "paste"
-version = "1.0.14"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pathdiff"
-version = "0.2.1"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
[[package]]
name = "phf"
@@ -1070,7 +1050,7 @@ dependencies = [
"phf_shared",
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
@@ -1104,27 +1084,26 @@ dependencies = [
[[package]]
name = "predicates"
-version = "3.0.4"
+version = "3.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0"
+checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573"
dependencies = [
"anstyle",
"difflib",
- "itertools 0.11.0",
"predicates-core",
]
[[package]]
name = "predicates-core"
-version = "1.0.6"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
+checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa"
[[package]]
name = "predicates-tree"
-version = "1.0.9"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
+checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c"
dependencies = [
"predicates-core",
"termtree",
@@ -1132,9 +1111,9 @@ dependencies = [
[[package]]
name = "pretty_assertions"
-version = "1.4.0"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
+checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
dependencies = [
"diff",
"yansi",
@@ -1166,9 +1145,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.82"
+version = "1.0.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
+checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
dependencies = [
"unicode-ident",
]
@@ -1195,9 +1174,9 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.36"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
dependencies = [
"proc-macro2",
]
@@ -1225,9 +1204,9 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
[[package]]
name = "rayon"
-version = "1.8.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
dependencies = [
"either",
"rayon-core",
@@ -1235,9 +1214,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
@@ -1245,18 +1224,18 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.4.1"
+version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
]
[[package]]
name = "regex"
-version = "1.10.2"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
@@ -1266,9 +1245,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.3"
+version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
@@ -1277,27 +1256,28 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.2"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "rend"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd"
+checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c"
dependencies = [
"bytecheck",
]
[[package]]
name = "rkyv"
-version = "0.7.42"
+version = "0.7.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58"
+checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b"
dependencies = [
"bitvec",
"bytecheck",
+ "bytes",
"hashbrown 0.12.3",
"ptr_meta",
"rend",
@@ -1309,9 +1289,9 @@ dependencies = [
[[package]]
name = "rkyv_derive"
-version = "0.7.42"
+version = "0.7.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d"
+checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0"
dependencies = [
"proc-macro2",
"quote",
@@ -1320,17 +1300,17 @@ dependencies = [
[[package]]
name = "rustc-hash"
-version = "2.0.0"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
[[package]]
name = "rustix"
-version = "0.38.21"
+version = "0.38.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
+checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85"
dependencies = [
- "bitflags 2.4.1",
+ "bitflags 2.6.0",
"errno",
"libc",
"linux-raw-sys",
@@ -1339,9 +1319,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.15"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "same-file"
@@ -1354,9 +1334,9 @@ dependencies = [
[[package]]
name = "schemars"
-version = "0.8.19"
+version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef"
+checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92"
dependencies = [
"dyn-clone",
"schemars_derive",
@@ -1367,14 +1347,14 @@ dependencies = [
[[package]]
name = "schemars_derive"
-version = "0.8.19"
+version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49"
+checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e"
dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
@@ -1391,15 +1371,15 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
[[package]]
name = "semver"
-version = "1.0.22"
+version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba"
[[package]]
name = "serde"
-version = "1.0.201"
+version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
+checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
dependencies = [
"serde_derive",
]
@@ -1416,46 +1396,53 @@ dependencies = [
[[package]]
name = "serde_bytes"
-version = "0.11.12"
+version = "0.11.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff"
+checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
dependencies = [
"serde",
]
[[package]]
name = "serde_derive"
-version = "1.0.201"
+version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
+checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
name = "serde_derive_internals"
-version = "0.29.0"
+version = "0.29.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3"
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
[[package]]
name = "serde_json"
-version = "1.0.108"
+version = "1.0.133"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
dependencies = [
"itoa",
+ "memchr",
"ryu",
"serde",
]
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
[[package]]
name = "simd-abstraction"
version = "0.7.1"
@@ -1467,9 +1454,9 @@ dependencies = [
[[package]]
name = "simdutf8"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "siphasher"
@@ -1479,9 +1466,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
[[package]]
name = "smallvec"
-version = "1.11.1"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
dependencies = [
"serde",
]
@@ -1522,9 +1509,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.63"
+version = "2.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704"
+checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
dependencies = [
"proc-macro2",
"quote",
@@ -1539,73 +1526,63 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tempfile"
-version = "3.8.1"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"
dependencies = [
"cfg-if",
"fastrand",
- "redox_syscall",
+ "once_cell",
"rustix",
"windows-sys",
]
[[package]]
name = "termcolor"
-version = "1.3.0"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
dependencies = [
"winapi-util",
]
[[package]]
name = "termtree"
-version = "0.4.1"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
+checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683"
[[package]]
name = "textwrap"
-version = "0.16.0"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
[[package]]
name = "thiserror"
-version = "1.0.50"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.50"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.63",
-]
-
-[[package]]
-name = "thread_local"
-version = "1.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
-dependencies = [
- "cfg-if",
- "once_cell",
+ "syn 2.0.90",
]
[[package]]
name = "tinyvec"
-version = "1.6.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
dependencies = [
"tinyvec_macros",
]
@@ -1627,27 +1604,27 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.12"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
[[package]]
name = "unicode-segmentation"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
[[package]]
name = "uuid"
-version = "1.5.0"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
+checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a"
[[package]]
name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "vlq"
@@ -1666,9 +1643,9 @@ dependencies = [
[[package]]
name = "walkdir"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
dependencies = [
"same-file",
"winapi-util",
@@ -1682,34 +1659,34 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.88"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396"
dependencies = [
"cfg-if",
+ "once_cell",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.88"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79"
dependencies = [
"bumpalo",
"log",
- "once_cell",
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.88"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -1717,22 +1694,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.88"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.88"
+version = "0.2.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6"
[[package]]
name = "winapi"
@@ -1752,11 +1729,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.6"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
- "winapi",
+ "windows-sys",
]
[[package]]
@@ -1767,35 +1744,20 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-core"
-version = "0.51.1"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.48.5",
+ "windows-targets",
]
[[package]]
name = "windows-sys"
-version = "0.48.0"
+version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
+ "windows-targets",
]
[[package]]
@@ -1804,46 +1766,28 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
"windows_i686_gnullvm",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
]
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
@@ -1856,48 +1800,24 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
@@ -1921,26 +1841,26 @@ dependencies = [
[[package]]
name = "yansi"
-version = "0.5.1"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
[[package]]
name = "zerocopy"
-version = "0.7.32"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.32"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.63",
+ "syn 2.0.90",
]
From cdbf0d4e54858051df140f631fa2b10717f59754 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 12:35:35 -0500
Subject: [PATCH 045/137] Update browser compat data
---
package.json | 4 ++--
scripts/build-prefixes.js | 8 ++++----
src/prefixes.rs | 14 +++++++-------
yarn.lock | 16 ++++++++--------
4 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/package.json b/package.json
index cc16bd24..b3b8a28a 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.6.18",
+ "@mdn/browser-compat-data": "~5.6.26",
"@napi-rs/cli": "^2.14.0",
"autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001684",
+ "caniuse-lite": "^1.0.30001690",
"codemirror": "^6.0.1",
"cssnano": "^5.0.8",
"esbuild": "^0.19.8",
diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js
index 0834ecb2..9ffa67c2 100644
--- a/scripts/build-prefixes.js
+++ b/scripts/build-prefixes.js
@@ -254,7 +254,7 @@ for (let feature of cssFeatures) {
addValue(compat, {}, 'custom-media-queries');
let mdnFeatures = {
- doublePositionGradients: mdn.css.types.image.gradient['radial-gradient'].doubleposition.__compat.support,
+ doublePositionGradients: mdn.css.types.gradient['radial-gradient'].doubleposition.__compat.support,
clampFunction: mdn.css.types.clamp.__compat.support,
placeSelf: mdn.css.properties['place-self'].__compat.support,
placeContent: mdn.css.properties['place-content'].__compat.support,
@@ -320,7 +320,7 @@ let mdnFeatures = {
absFunction: mdn.css.types.abs.__compat.support,
signFunction: mdn.css.types.sign.__compat.support,
hypotFunction: mdn.css.types.hypot.__compat.support,
- gradientInterpolationHints: mdn.css.types.image.gradient['linear-gradient'].interpolation_hints.__compat.support,
+ gradientInterpolationHints: mdn.css.types.gradient['linear-gradient'].interpolation_hints.__compat.support,
borderImageRepeatRound: mdn.css.properties['border-image-repeat'].round.__compat.support,
borderImageRepeatSpace: mdn.css.properties['border-image-repeat'].space.__compat.support,
fontSizeRem: mdn.css.properties['font-size'].rem_values.__compat.support,
@@ -345,13 +345,13 @@ for (let key in mdn.css.types.length) {
mdnFeatures[feat] = mdn.css.types.length[key].__compat.support;
}
-for (let key in mdn.css.types.image.gradient) {
+for (let key in mdn.css.types.gradient) {
if (key === '__compat') {
continue;
}
let feat = key.replace(/-([a-z])/g, (_, l) => l.toUpperCase());
- mdnFeatures[feat] = mdn.css.types.image.gradient[key].__compat.support;
+ mdnFeatures[feat] = mdn.css.types.gradient[key].__compat.support;
}
const nonStandardListStyleType = new Set([
diff --git a/src/prefixes.rs b/src/prefixes.rs
index 34a97e1f..8735011a 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -562,7 +562,7 @@ impl Feature {
}
Feature::Element => {
if let Some(version) = browsers.firefox {
- if version >= 131072 {
+ if version >= 131072 && version <= 8847360 {
prefixes |= VendorPrefix::Moz;
}
}
@@ -1225,7 +1225,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 {
+ if version >= 262144 && version <= 1703936 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1274,7 +1274,7 @@ impl Feature {
}
}
if let Some(version) = browsers.firefox {
- if version >= 196608 {
+ if version >= 196608 && version <= 8847360 {
prefixes |= VendorPrefix::Moz;
}
}
@@ -1304,7 +1304,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 327680 {
+ if version >= 327680 && version <= 1703936 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1549,7 +1549,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 {
+ if version >= 262144 && version <= 1703936 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1951,7 +1951,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 {
+ if version >= 262144 && version <= 1703936 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2191,7 +2191,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 {
+ if version >= 262144 && version <= 1703936 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index 9186ec11..efb26ebe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -454,10 +454,10 @@
resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
-"@mdn/browser-compat-data@~5.6.18":
- version "5.6.18"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.18.tgz#62bfd9f7a646e54e68b3739cb34bcf508e699410"
- integrity sha512-WCQcQGyydquw7NXPL2NopMCgmUvIQDG7KM/IGR4PMJSDH5SHZKXUDEF6rdpGWj0MtcjQseOCl/hjzYzj0fMMeA==
+"@mdn/browser-compat-data@~5.6.26":
+ version "5.6.26"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.26.tgz#0d1a64cf0a04a29f4283bbc1f5a313f355f9c73d"
+ integrity sha512-7NdgdOR7lkzrN70zGSULmrcvKyi/aJjpTJRCbuy8IZuHiLkPTvsr10jW0MJgWzK2l2wTmhdQvegTw6yNU5AVNQ==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.0"
@@ -1352,10 +1352,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
-caniuse-lite@^1.0.30001684:
- version "1.0.30001684"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz#0eca437bab7d5f03452ff0ef9de8299be6b08e16"
- integrity sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==
+caniuse-lite@^1.0.30001690:
+ version "1.0.30001690"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8"
+ integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==
chalk@^2.0.0:
version "2.4.2"
From d45cf88e8e78736bef1f6e58b77e775f3c7c9d4f Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 12:41:17 -0500
Subject: [PATCH 046/137] Update JS dependencies
---
package.json | 4 +-
...7.21.4.patch => @babel+types+7.26.3.patch} | 4 +-
...=> json-schema-to-typescript+11.0.5.patch} | 2 +-
yarn.lock | 4183 +++++++++--------
4 files changed, 2107 insertions(+), 2086 deletions(-)
rename patches/{@babel+types+7.21.4.patch => @babel+types+7.26.3.patch} (89%)
rename patches/{json-schema-to-typescript+11.0.2.patch => json-schema-to-typescript+11.0.5.patch} (99%)
diff --git a/package.json b/package.json
index b3b8a28a..392ee7f2 100644
--- a/package.json
+++ b/package.json
@@ -53,7 +53,7 @@
"autoprefixer": "^10.4.20",
"caniuse-lite": "^1.0.30001690",
"codemirror": "^6.0.1",
- "cssnano": "^5.0.8",
+ "cssnano": "^7.0.6",
"esbuild": "^0.19.8",
"flowgen": "^1.21.0",
"jest-diff": "^27.4.2",
@@ -73,7 +73,7 @@
"process": "^0.11.10",
"puppeteer": "^12.0.1",
"recast": "^0.22.0",
- "sharp": "^0.31.1",
+ "sharp": "^0.33.5",
"util": "^0.12.4",
"uvu": "^0.5.6"
},
diff --git a/patches/@babel+types+7.21.4.patch b/patches/@babel+types+7.26.3.patch
similarity index 89%
rename from patches/@babel+types+7.21.4.patch
rename to patches/@babel+types+7.26.3.patch
index 45b21d58..e672fb01 100644
--- a/patches/@babel+types+7.21.4.patch
+++ b/patches/@babel+types+7.26.3.patch
@@ -1,8 +1,8 @@
diff --git a/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
-index 19903eb..6bc04a8 100644
+index 31feb1e..a64b83d 100644
--- a/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
+++ b/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
-@@ -59,6 +59,13 @@ getBindingIdentifiers.keys = {
+@@ -66,6 +66,13 @@ const keys = {
InterfaceDeclaration: ["id"],
TypeAlias: ["id"],
OpaqueType: ["id"],
diff --git a/patches/json-schema-to-typescript+11.0.2.patch b/patches/json-schema-to-typescript+11.0.5.patch
similarity index 99%
rename from patches/json-schema-to-typescript+11.0.2.patch
rename to patches/json-schema-to-typescript+11.0.5.patch
index 37b11173..b1d06ba6 100644
--- a/patches/json-schema-to-typescript+11.0.2.patch
+++ b/patches/json-schema-to-typescript+11.0.5.patch
@@ -1,5 +1,5 @@
diff --git a/node_modules/json-schema-to-typescript/dist/src/parser.js b/node_modules/json-schema-to-typescript/dist/src/parser.js
-index aec32ab..aafd1b5 100644
+index fa9d2e4..3f65449 100644
--- a/node_modules/json-schema-to-typescript/dist/src/parser.js
+++ b/node_modules/json-schema-to-typescript/dist/src/parser.js
@@ -1,6 +1,6 @@
diff --git a/yarn.lock b/yarn.lock
index efb26ebe..fd2256a3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,112 +2,87 @@
# yarn lockfile v1
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
- integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
- dependencies:
- "@babel/highlight" "^7.18.6"
-
-"@babel/generator@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc"
- integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==
- dependencies:
- "@babel/types" "^7.21.4"
- "@jridgewell/gen-mapping" "^0.3.2"
- "@jridgewell/trace-mapping" "^0.3.17"
- jsesc "^2.5.1"
-
-"@babel/helper-environment-visitor@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
- integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
-
-"@babel/helper-function-name@^7.21.0":
- version "7.21.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4"
- integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
- dependencies:
- "@babel/template" "^7.20.7"
- "@babel/types" "^7.21.0"
-
-"@babel/helper-hoist-variables@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678"
- integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
- dependencies:
- "@babel/types" "^7.18.6"
-
-"@babel/helper-split-export-declaration@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075"
- integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
- dependencies:
- "@babel/types" "^7.18.6"
-
-"@babel/helper-string-parser@^7.19.4":
- version "7.19.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
- integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
-
-"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
- integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
-
-"@babel/highlight@^7.16.7", "@babel/highlight@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
- integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
- dependencies:
- "@babel/helper-validator-identifier" "^7.18.6"
- chalk "^2.0.0"
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/generator@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019"
+ integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==
+ dependencies:
+ "@babel/parser" "^7.26.3"
+ "@babel/types" "^7.26.3"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^3.0.2"
+
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
+"@babel/highlight@^7.16.7":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6"
+ integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ chalk "^2.4.2"
js-tokens "^4.0.0"
+ picocolors "^1.0.0"
-"@babel/parser@^7.20.7", "@babel/parser@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
- integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
+"@babel/parser@^7.21.4", "@babel/parser@^7.25.9", "@babel/parser@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234"
+ integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==
+ dependencies:
+ "@babel/types" "^7.26.3"
-"@babel/template@^7.20.7":
- version "7.20.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
- integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
+"@babel/template@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
+ integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
dependencies:
- "@babel/code-frame" "^7.18.6"
- "@babel/parser" "^7.20.7"
- "@babel/types" "^7.20.7"
+ "@babel/code-frame" "^7.25.9"
+ "@babel/parser" "^7.25.9"
+ "@babel/types" "^7.25.9"
"@babel/traverse@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36"
- integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==
- dependencies:
- "@babel/code-frame" "^7.21.4"
- "@babel/generator" "^7.21.4"
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.21.0"
- "@babel/helper-hoist-variables" "^7.18.6"
- "@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/parser" "^7.21.4"
- "@babel/types" "^7.21.4"
- debug "^4.1.0"
+ version "7.26.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd"
+ integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@babel/generator" "^7.26.3"
+ "@babel/parser" "^7.26.3"
+ "@babel/template" "^7.25.9"
+ "@babel/types" "^7.26.3"
+ debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4":
- version "7.21.4"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4"
- integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==
+"@babel/types@^7.25.9", "@babel/types@^7.26.3":
+ version "7.26.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
+ integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
dependencies:
- "@babel/helper-string-parser" "^7.19.4"
- "@babel/helper-validator-identifier" "^7.19.1"
- to-fast-properties "^2.0.0"
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
-"@bcherny/json-schema-ref-parser@9.0.9":
- version "9.0.9"
- resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#09899d405bc708c0acac0066ae8db5b94d465ca4"
- integrity sha512-vmEmnJCfpkLdas++9OYg6riIezTYqTHpqUTODJzHLzs5UnXujbOJW9VwcVCnyo1mVRt32FRr23iXBx/sX8YbeQ==
+"@bcherny/json-schema-ref-parser@10.0.5-fork":
+ version "10.0.5-fork"
+ resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz#9b5e1e7e07964ea61840174098e634edbe8197bc"
+ integrity sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw==
dependencies:
"@jsdevtools/ono" "^7.1.3"
"@types/json-schema" "^7.0.6"
@@ -115,344 +90,448 @@
js-yaml "^4.1.0"
"@codemirror/autocomplete@^6.0.0":
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.4.0.tgz#76ac9a2a411a4cc6e13103014dba5e0fe601da5a"
- integrity sha512-HLF2PnZAm1s4kGs30EiqKMgD7XsYaQ0XJnMR0rofEWQ5t5D60SfqpDIkIh1ze5tiEbyUWm8+VJ6W1/erVvBMIA==
+ version "6.18.4"
+ resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.4.tgz#4394f55d6771727179f2e28a871ef46bbbeb11b1"
+ integrity sha512-sFAphGQIqyQZfP2ZBsSHV7xQvo9Py0rV0dW7W3IMRdS+zDuNb2l3no78CvUaWKGfzFjI4FTrLdUSj86IGb2hRA==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.6.0"
+ "@codemirror/view" "^6.17.0"
"@lezer/common" "^1.0.0"
"@codemirror/commands@^6.0.0":
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.1.3.tgz#401d0b6d18e7d5eb9a96f6c8ae4ea56a08e8fd06"
- integrity sha512-wUw1+vb34Ultv0Q9m/OVB7yizGXgtoDbkI5f5ErM8bebwLyUYjicdhJTKhTvPTpgkv8dq/BK0lQ3K5pRf2DAJw==
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.7.1.tgz#04561e95bc0779eaa49efd63e916c4efb3bbf6d6"
+ integrity sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==
dependencies:
"@codemirror/language" "^6.0.0"
- "@codemirror/state" "^6.2.0"
- "@codemirror/view" "^6.0.0"
- "@lezer/common" "^1.0.0"
+ "@codemirror/state" "^6.4.0"
+ "@codemirror/view" "^6.27.0"
+ "@lezer/common" "^1.1.0"
"@codemirror/lang-css@^6.0.1":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.0.1.tgz#470fff614e4cfbbe796ec43103420d59c797dd7a"
- integrity sha512-rlLq1Dt0WJl+2epLQeAsfqIsx3lGu4HStHCJu95nGGuz2P2fNugbU3dQYafr2VRjM4eMC9HviI6jvS98CNtG5w==
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz#763ca41aee81bb2431be55e3cfcc7cc8e91421a3"
+ integrity sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
- "@lezer/css" "^1.0.0"
+ "@lezer/common" "^1.0.2"
+ "@lezer/css" "^1.1.7"
"@codemirror/lang-javascript@^6.1.2":
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.1.2.tgz#a11812ca1d21301cdeb80e51b4c007edcf55f813"
- integrity sha512-OcwLfZXdQ1OHrLiIcKCn7MqZ7nx205CMKlhe+vL88pe2ymhT9+2P+QhwkYGxMICj8TDHyp8HFKVwpiisUT7iEQ==
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz#7141090b22994bef85bcc5608a3bc1257f2db2ad"
+ integrity sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
- "@codemirror/language" "^6.0.0"
+ "@codemirror/language" "^6.6.0"
"@codemirror/lint" "^6.0.0"
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.0.0"
+ "@codemirror/view" "^6.17.0"
"@lezer/common" "^1.0.0"
"@lezer/javascript" "^1.0.0"
-"@codemirror/language@^6.0.0":
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.3.2.tgz#a3d5796d17a2cd3110bac0f5126db67c7e90a0f3"
- integrity sha512-g42uHhOcEMAXjmozGG+rdom5UsbyfMxQFh7AbkeoaNImddL6Xt4cQDL0+JxmG7+as18rUAvZaqzP/TjsciVIrA==
+"@codemirror/language@^6.0.0", "@codemirror/language@^6.6.0":
+ version "6.10.7"
+ resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.7.tgz#415ba3bb983416daa98084c010f4db59db45920e"
+ integrity sha512-aOswhVOLYhMNeqykt4P7+ukQSpGL0ynZYaEyFDVHE7fl2xgluU3yuE9MdgYNfw6EmaNidoFMIQ2iTh1ADrnT6A==
dependencies:
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.0.0"
- "@lezer/common" "^1.0.0"
+ "@codemirror/view" "^6.23.0"
+ "@lezer/common" "^1.1.0"
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.0.0"
style-mod "^4.0.0"
"@codemirror/lint@^6.0.0", "@codemirror/lint@^6.1.0":
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.1.0.tgz#f006142d3a580fdb8ffc2faa3361b2232c08e079"
- integrity sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==
+ version "6.8.4"
+ resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.4.tgz#7d8aa5d1a6dec89ffcc23ad45ddca2e12e90982d"
+ integrity sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==
dependencies:
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.0.0"
+ "@codemirror/view" "^6.35.0"
crelt "^1.0.5"
"@codemirror/search@^6.0.0":
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.3.tgz#fab933fef1b1de8ef40cda275c73d9ac7a1ff40f"
- integrity sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==
+ version "6.5.8"
+ resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.5.8.tgz#b59b3659b46184cc75d6108d7c050a4ca344c3a0"
+ integrity sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.0.0"
crelt "^1.0.5"
-"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.4", "@codemirror/state@^6.2.0":
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.2.0.tgz#a0fb08403ced8c2a68d1d0acee926bd20be922f2"
- integrity sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==
+"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0":
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.0.tgz#e98dde85620618651543152fe1c2483300a0ccc9"
+ integrity sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw==
+ dependencies:
+ "@marijn/find-cluster-break" "^1.0.0"
"@codemirror/theme-one-dark@^6.1.0":
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz#6f8b3c7fc22e9fec59edd573f4ba9546db42e007"
- integrity sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz#fcef9f9cfc17a07836cb7da17c9f6d7231064df8"
+ integrity sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.0.0"
"@lezer/highlight" "^1.0.0"
-"@codemirror/view@^6.0.0", "@codemirror/view@^6.6.0":
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.7.1.tgz#370e95d6f001e7f5cadc459807974b4f0a6eb225"
- integrity sha512-kYtS+uqYw/q/0ytYxpkqE1JVuK5NsbmBklWYhwLFTKO9gVuTdh/kDEeZPKorbqHcJ+P+ucrhcsS1czVweOpT2g==
+"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0":
+ version "6.36.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.36.1.tgz#3c543b8fd72c96b30c4b2b1464d1ebce7e0c5c4b"
+ integrity sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ==
dependencies:
- "@codemirror/state" "^6.1.4"
- style-mod "^4.0.0"
+ "@codemirror/state" "^6.5.0"
+ style-mod "^4.1.0"
w3c-keyname "^2.2.4"
-"@esbuild/android-arm64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz#fb7130103835b6d43ea499c3f30cfb2b2ed58456"
- integrity sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==
-
-"@esbuild/android-arm@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.8.tgz#b46e4d9e984e6d6db6c4224d72c86b7757e35bcb"
- integrity sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==
-
-"@esbuild/android-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz#a13db9441b5a4f4e4fec4a6f8ffacfea07888db7"
- integrity sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==
-
-"@esbuild/darwin-arm64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz#49f5718d36541f40dd62bfdf84da9c65168a0fc2"
- integrity sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==
-
-"@esbuild/darwin-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz#75c5c88371eea4bfc1f9ecfd0e75104c74a481ac"
- integrity sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==
-
-"@esbuild/freebsd-arm64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz#9d7259fea4fd2b5f7437b52b542816e89d7c8575"
- integrity sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==
-
-"@esbuild/freebsd-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz#abac03e1c4c7c75ee8add6d76ec592f46dbb39e3"
- integrity sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==
-
-"@esbuild/linux-arm64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz#c577932cf4feeaa43cb9cec27b89cbe0df7d9098"
- integrity sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==
-
-"@esbuild/linux-arm@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz#d6014d8b98b5cbc96b95dad3d14d75bb364fdc0f"
- integrity sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==
-
-"@esbuild/linux-ia32@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz#2379a0554307d19ac4a6cdc15b08f0ea28e7a40d"
- integrity sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==
-
-"@esbuild/linux-loong64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz#e2a5bbffe15748b49356a6cd7b2d5bf60c5a7123"
- integrity sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==
-
-"@esbuild/linux-mips64el@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz#1359331e6f6214f26f4b08db9b9df661c57cfa24"
- integrity sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==
-
-"@esbuild/linux-ppc64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz#9ba436addc1646dc89dae48c62d3e951ffe70951"
- integrity sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==
-
-"@esbuild/linux-riscv64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz#fbcf0c3a0b20f40b5fc31c3b7695f0769f9de66b"
- integrity sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==
-
-"@esbuild/linux-s390x@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz#989e8a05f7792d139d5564ffa7ff898ac6f20a4a"
- integrity sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==
-
-"@esbuild/linux-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz#b187295393a59323397fe5ff51e769ec4e72212b"
- integrity sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==
-
-"@esbuild/netbsd-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz#c1ec0e24ea82313cb1c7bae176bd5acd5bde7137"
- integrity sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==
-
-"@esbuild/openbsd-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz#0c5b696ac66c6d70cf9ee17073a581a28af9e18d"
- integrity sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==
-
-"@esbuild/sunos-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz#2a697e1f77926ff09fcc457d8f29916d6cd48fb1"
- integrity sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==
-
-"@esbuild/win32-arm64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz#ec029e62a2fca8c071842ecb1bc5c2dd20b066f1"
- integrity sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==
-
-"@esbuild/win32-ia32@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz#cbb9a3146bde64dc15543e48afe418c7a3214851"
- integrity sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==
-
-"@esbuild/win32-x64@0.19.8":
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz#c8285183dbdb17008578dbacb6e22748709b4822"
- integrity sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==
-
-"@jest/types@^27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5"
- integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^16.0.0"
- chalk "^4.0.0"
+"@emnapi/runtime@^1.2.0":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60"
+ integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==
+ dependencies:
+ tslib "^2.4.0"
-"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
- integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+"@esbuild/aix-ppc64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f"
+ integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==
+
+"@esbuild/android-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4"
+ integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==
+
+"@esbuild/android-arm@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824"
+ integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==
+
+"@esbuild/android-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d"
+ integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==
+
+"@esbuild/darwin-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e"
+ integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==
+
+"@esbuild/darwin-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd"
+ integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==
+
+"@esbuild/freebsd-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487"
+ integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==
+
+"@esbuild/freebsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c"
+ integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==
+
+"@esbuild/linux-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b"
+ integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==
+
+"@esbuild/linux-arm@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef"
+ integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==
+
+"@esbuild/linux-ia32@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601"
+ integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==
+
+"@esbuild/linux-loong64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299"
+ integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==
+
+"@esbuild/linux-mips64el@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec"
+ integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==
+
+"@esbuild/linux-ppc64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8"
+ integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==
+
+"@esbuild/linux-riscv64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf"
+ integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==
+
+"@esbuild/linux-s390x@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8"
+ integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==
+
+"@esbuild/linux-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78"
+ integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==
+
+"@esbuild/netbsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b"
+ integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==
+
+"@esbuild/openbsd-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0"
+ integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==
+
+"@esbuild/sunos-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30"
+ integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==
+
+"@esbuild/win32-arm64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae"
+ integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==
+
+"@esbuild/win32-ia32@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67"
+ integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==
+
+"@esbuild/win32-x64@0.19.12":
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae"
+ integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==
+
+"@img/sharp-darwin-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08"
+ integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-arm64" "1.0.4"
+
+"@img/sharp-darwin-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61"
+ integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==
+ optionalDependencies:
+ "@img/sharp-libvips-darwin-x64" "1.0.4"
+
+"@img/sharp-libvips-darwin-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f"
+ integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==
+
+"@img/sharp-libvips-darwin-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062"
+ integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==
+
+"@img/sharp-libvips-linux-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704"
+ integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==
+
+"@img/sharp-libvips-linux-arm@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197"
+ integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==
+
+"@img/sharp-libvips-linux-s390x@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce"
+ integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==
+
+"@img/sharp-libvips-linux-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0"
+ integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==
+
+"@img/sharp-libvips-linuxmusl-arm64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5"
+ integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==
+
+"@img/sharp-libvips-linuxmusl-x64@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff"
+ integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==
+
+"@img/sharp-linux-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22"
+ integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm64" "1.0.4"
+
+"@img/sharp-linux-arm@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff"
+ integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-arm" "1.0.5"
+
+"@img/sharp-linux-s390x@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667"
+ integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-s390x" "1.0.4"
+
+"@img/sharp-linux-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb"
+ integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==
+ optionalDependencies:
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+
+"@img/sharp-linuxmusl-arm64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b"
+ integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
+
+"@img/sharp-linuxmusl-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48"
+ integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==
+ optionalDependencies:
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+
+"@img/sharp-wasm32@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1"
+ integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==
dependencies:
- "@jridgewell/set-array" "^1.0.1"
- "@jridgewell/sourcemap-codec" "^1.4.10"
- "@jridgewell/trace-mapping" "^0.3.9"
+ "@emnapi/runtime" "^1.2.0"
-"@jridgewell/resolve-uri@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
- integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+"@img/sharp-win32-ia32@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9"
+ integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==
-"@jridgewell/set-array@^1.0.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
- integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+"@img/sharp-win32-x64@0.33.5":
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342"
+ integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==
-"@jridgewell/source-map@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
- integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
+ integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
dependencies:
- "@jridgewell/gen-mapping" "^0.3.0"
- "@jridgewell/trace-mapping" "^0.3.9"
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
-"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
- version "1.4.14"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
- integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
- version "0.3.18"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
- integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
dependencies:
- "@jridgewell/resolve-uri" "3.1.0"
- "@jridgewell/sourcemap-codec" "1.4.14"
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
"@jsdevtools/ono@^7.1.3":
version "7.1.3"
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
-"@lezer/common@^0.15.0", "@lezer/common@^0.15.7":
- version "0.15.12"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9"
- integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig==
-
-"@lezer/common@^1.0.0":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087"
- integrity sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==
+"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd"
+ integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
-"@lezer/css@^1.0.0":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.1.tgz#c36dcb0789317cb80c3740767dd3b85e071ad082"
- integrity sha512-mSjx+unLLapEqdOYDejnGBokB5+AiJKZVclmud0MKQOKx3DLJ5b5VTCstgDDknR6iIV4gVrN6euzsCnj0A2gQA==
+"@lezer/css@^1.1.7":
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.9.tgz#404563d361422c5a1fe917295f1527ee94845ed1"
+ integrity sha512-TYwgljcDv+YrV0MZFFvYFQHCfGgbPMR6nuqLabBdmZoFH3EP1gvw8t0vae326Ne3PszQkbXfVBjCnf3ZVCr0bA==
dependencies:
+ "@lezer/common" "^1.2.0"
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.0.0"
-"@lezer/highlight@^1.0.0":
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.3.tgz#bf5a36c2ee227f526d74997ac91f7777e29bd25d"
- integrity sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==
+"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b"
+ integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
dependencies:
"@lezer/common" "^1.0.0"
"@lezer/javascript@^1.0.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.0.tgz#fe71474fcadc6112fb0978310faed0788d0af824"
- integrity sha512-MQ3oLJGEtpUgZ03LOLI60tDnjSkKO6h9hZSe31qJ1UQV+I9bpv3pwSnPUnX0+e+3E1PBVkox0GB2/MXkxg0M2w==
+ version "1.4.21"
+ resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.21.tgz#8ebf7d1f891c70e3d00864f5a03ac42c75d19492"
+ integrity sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==
dependencies:
- "@lezer/highlight" "^1.0.0"
- "@lezer/lr" "^1.0.0"
+ "@lezer/common" "^1.2.0"
+ "@lezer/highlight" "^1.1.3"
+ "@lezer/lr" "^1.3.0"
-"@lezer/lr@^0.15.4":
- version "0.15.8"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21"
- integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==
- dependencies:
- "@lezer/common" "^0.15.0"
-
-"@lezer/lr@^1.0.0":
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.2.5.tgz#e9088164a711690596f17378665e0554157c9b03"
- integrity sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g==
+"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727"
+ integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
dependencies:
"@lezer/common" "^1.0.0"
-"@lmdb/lmdb-darwin-arm64@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.5.2.tgz#bc66fa43286b5c082e8fee0eacc17995806b6fbe"
- integrity sha512-+F8ioQIUN68B4UFiIBYu0QQvgb9FmlKw2ctQMSBfW2QBrZIxz9vD9jCGqTCPqZBRbPHAS/vG1zSXnKqnS2ch/A==
-
-"@lmdb/lmdb-darwin-x64@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.5.2.tgz#89d8390041bce6bab24a82a20392be22faf54ffc"
- integrity sha512-KvPH56KRLLx4KSfKBx0m1r7GGGUMXm0jrKmNE7plbHlesZMuPJICtn07HYgQhj1LNsK7Yqwuvnqh1QxhJnF1EA==
-
-"@lmdb/lmdb-linux-arm64@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.5.2.tgz#14fe4c96c2bb1285f93797f45915fa35ee047268"
- integrity sha512-aLl89VHL/wjhievEOlPocoefUyWdvzVrcQ/MHQYZm2JfV1jUsrbr/ZfkPPUFvZBf+VSE+Q0clWs9l29PCX1hTQ==
-
-"@lmdb/lmdb-linux-arm@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.5.2.tgz#05bde4573ab10cf21827339fe687148f2590cfa1"
- integrity sha512-5kQAP21hAkfW5Bl+e0P57dV4dGYnkNIpR7f/GAh6QHlgXx+vp/teVj4PGRZaKAvt0GX6++N6hF8NnGElLDuIDw==
-
-"@lmdb/lmdb-linux-x64@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.5.2.tgz#d2f85afd857d2c33d2caa5b057944574edafcfee"
- integrity sha512-xUdUfwDJLGjOUPH3BuPBt0NlIrR7f/QHKgu3GZIXswMMIihAekj2i97oI0iWG5Bok/b+OBjHPfa8IU9velnP/Q==
-
-"@lmdb/lmdb-win32-x64@2.5.2":
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.2.tgz#28f643fbc0bec30b07fbe95b137879b6b4d1c9c5"
- integrity sha512-zrBczSbXKxEyK2ijtbRdICDygRqWSRPpZMN5dD1T8VMEW5RIhIbwFWw2phDRXuBQdVDpSjalCIUMWMV2h3JaZA==
+"@lmdb/lmdb-darwin-arm64@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e"
+ integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==
+
+"@lmdb/lmdb-darwin-x64@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184"
+ integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==
+
+"@lmdb/lmdb-linux-arm64@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e"
+ integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==
+
+"@lmdb/lmdb-linux-arm@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d"
+ integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==
+
+"@lmdb/lmdb-linux-x64@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302"
+ integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==
+
+"@lmdb/lmdb-win32-x64@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c"
+ integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==
+
+"@marijn/find-cluster-break@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
+ integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
"@mdn/browser-compat-data@~5.6.26":
version "5.6.26"
@@ -460,422 +539,457 @@
integrity sha512-7NdgdOR7lkzrN70zGSULmrcvKyi/aJjpTJRCbuy8IZuHiLkPTvsr10jW0MJgWzK2l2wTmhdQvegTw6yNU5AVNQ==
"@mischnic/json-sourcemap@^0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507"
- integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906"
+ integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==
dependencies:
- "@lezer/common" "^0.15.7"
- "@lezer/lr" "^0.15.4"
+ "@lezer/common" "^1.0.0"
+ "@lezer/lr" "^1.0.0"
json5 "^2.2.1"
-"@msgpackr-extract/msgpackr-extract-darwin-arm64@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-2.1.2.tgz#9571b87be3a3f2c46de05585470bc4f3af2f6f00"
- integrity sha512-TyVLn3S/+ikMDsh0gbKv2YydKClN8HaJDDpONlaZR+LVJmsxLFUgA+O7zu59h9+f9gX1aj/ahw9wqa6rosmrYQ==
+"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11"
+ integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==
-"@msgpackr-extract/msgpackr-extract-darwin-x64@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-2.1.2.tgz#bfbc6936ede2955218f5621a675679a5fe8e6f4c"
- integrity sha512-YPXtcVkhmVNoMGlqp81ZHW4dMxK09msWgnxtsDpSiZwTzUBG2N+No2bsr7WMtBKCVJMSD6mbAl7YhKUqkp/Few==
+"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855"
+ integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==
-"@msgpackr-extract/msgpackr-extract-linux-arm64@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-2.1.2.tgz#22555e28382af2922e7450634c8a2f240bb9eb82"
- integrity sha512-vHZ2JiOWF2+DN9lzltGbhtQNzDo8fKFGrf37UJrgqxU0yvtERrzUugnfnX1wmVfFhSsF8OxrfqiNOUc5hko1Zg==
+"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb"
+ integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==
-"@msgpackr-extract/msgpackr-extract-linux-arm@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-2.1.2.tgz#ffb6ae1beea7ac572b6be6bf2a8e8162ebdd8be7"
- integrity sha512-42R4MAFeIeNn+L98qwxAt360bwzX2Kf0ZQkBBucJ2Ircza3asoY4CDbgiu9VWklq8gWJVSJSJBwDI+c/THiWkA==
+"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159"
+ integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==
-"@msgpackr-extract/msgpackr-extract-linux-x64@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-2.1.2.tgz#7caf62eebbfb1345de40f75e89666b3d4194755f"
- integrity sha512-RjRoRxg7Q3kPAdUSC5EUUPlwfMkIVhmaRTIe+cqHbKrGZ4M6TyCA/b5qMaukQ/1CHWrqYY2FbKOAU8Hg0pQFzg==
+"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3"
+ integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==
-"@msgpackr-extract/msgpackr-extract-win32-x64@2.1.2":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-2.1.2.tgz#f2d8b9ddd8d191205ed26ce54aba3dfc5ae3e7c9"
- integrity sha512-rIZVR48zA8hGkHIK7ED6+ZiXsjRCcAVBJbm8o89OKAMTmEAQ2QvoOxoiu3w2isAaWwzgtQIOFIqHwvZDyLKCvw==
+"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242"
+ integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==
"@napi-rs/cli@^2.14.0":
- version "2.14.0"
- resolved "https://registry.yarnpkg.com/@napi-rs/cli/-/cli-2.14.0.tgz#ca1c1a75d6922f8af098d8d56f4914e0889963c8"
- integrity sha512-hQW+gOTQ80nCoBAWA0hq49HM3QqyC7x879CdF/CEEFHeJNlHT8tgru8nbMQa6YqMP1XADfiudsYzy5V7TxBxCw==
-
-"@parcel/bundler-default@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.8.2.tgz#7340866cd612aece575489d16bf97325fd699b7f"
- integrity sha512-/7ao0vc/v8WGHZaS1SyS5R8wzqmmXEr9mhIIB2cbLQ4LA2WUtKsYcvZ2gjJuiAAN1CHC6GxqwYjIJScQCk/QXg==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/graph" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ version "2.18.4"
+ resolved "https://registry.yarnpkg.com/@napi-rs/cli/-/cli-2.18.4.tgz#12bebfb7995902fa7ab43cc0b155a7f5a2caa873"
+ integrity sha512-SgJeA4df9DE2iAEpr3M2H0OKl/yjtg1BnRI5/JyowS71tUWhrfSu2LT0V3vlHET+g1hBVlrO60PmEXwUEKp8Mg==
+
+"@parcel/bundler-default@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.13.3.tgz#3a7b88f473b46321532dc0f187667f8e34f0722d"
+ integrity sha512-mOuWeth0bZzRv1b9Lrvydis/hAzJyePy0gwa0tix3/zyYBvw0JY+xkXVR4qKyD/blc1Ra2qOlfI2uD3ucnsdXA==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/graph" "3.3.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
-"@parcel/cache@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.8.2.tgz#64ab1a4ecc20033b7d20a72ddd8898fea035e553"
- integrity sha512-kiyoOgh1RXp5qp+wlb8Pi/Z7o9D82Oj5RlHnKSAauyR7jgnI8Vq8JTeBmlLqrf+kHxcDcp2p86hidSeANhlQNg==
- dependencies:
- "@parcel/fs" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/utils" "2.8.2"
- lmdb "2.5.2"
-
-"@parcel/codeframe@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.8.2.tgz#a170050404792acb6d9beac931b5ece25e3fc0b9"
- integrity sha512-U2GT9gq1Zs3Gr83j8JIs10bLbGOHFl57Y8D57nrdR05F4iilV/UR6K7jkhdoiFc9WiHh3ewvrko5+pSdAVFPgQ==
- dependencies:
- chalk "^4.1.0"
-
-"@parcel/compressor-raw@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.8.2.tgz#8b21b958416185a55ecd301ddf92ba6aded8c082"
- integrity sha512-EFPTer/P+3axifH6LtYHS3E6ABgdZnjZomJZ/Nl19lypZh/NgZzmMZlINlEVqyYhCggoKfXzgeTgkIHPN2d5Vw==
- dependencies:
- "@parcel/plugin" "2.8.2"
-
-"@parcel/config-default@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.8.2.tgz#2f96207f84bdd155cf4bfd02f10519b2ec33449a"
- integrity sha512-1ELJAHx37fKSZZkYKWy6UdcuLRv5vrZJc89tVS6eRvvMt+udbIoSgIUzPXu7XemkcchF7Tryw3u2pRyxyLyL3w==
- dependencies:
- "@parcel/bundler-default" "2.8.2"
- "@parcel/compressor-raw" "2.8.2"
- "@parcel/namer-default" "2.8.2"
- "@parcel/optimizer-css" "2.8.2"
- "@parcel/optimizer-htmlnano" "2.8.2"
- "@parcel/optimizer-image" "2.8.2"
- "@parcel/optimizer-svgo" "2.8.2"
- "@parcel/optimizer-terser" "2.8.2"
- "@parcel/packager-css" "2.8.2"
- "@parcel/packager-html" "2.8.2"
- "@parcel/packager-js" "2.8.2"
- "@parcel/packager-raw" "2.8.2"
- "@parcel/packager-svg" "2.8.2"
- "@parcel/reporter-dev-server" "2.8.2"
- "@parcel/resolver-default" "2.8.2"
- "@parcel/runtime-browser-hmr" "2.8.2"
- "@parcel/runtime-js" "2.8.2"
- "@parcel/runtime-react-refresh" "2.8.2"
- "@parcel/runtime-service-worker" "2.8.2"
- "@parcel/transformer-babel" "2.8.2"
- "@parcel/transformer-css" "2.8.2"
- "@parcel/transformer-html" "2.8.2"
- "@parcel/transformer-image" "2.8.2"
- "@parcel/transformer-js" "2.8.2"
- "@parcel/transformer-json" "2.8.2"
- "@parcel/transformer-postcss" "2.8.2"
- "@parcel/transformer-posthtml" "2.8.2"
- "@parcel/transformer-raw" "2.8.2"
- "@parcel/transformer-react-refresh-wrap" "2.8.2"
- "@parcel/transformer-svg" "2.8.2"
-
-"@parcel/core@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.8.2.tgz#9ee5a0b18337885dc0893958f9e4190cb599200a"
- integrity sha512-ZGuq6p+Lzx6fgufaVsuOBwgpU3hgskTvIDIMdIDi9gOZyhGPK7U2srXdX+VYUL5ZSGbX04/P6QlB9FMAXK+nEg==
+"@parcel/cache@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.13.3.tgz#ea23b8cc3d30ee7b7e735e4c58dc5294d5bdb437"
+ integrity sha512-Vz5+K5uCt9mcuQAMDo0JdbPYDmVdB8Nvu/A2vTEK2rqZPxvoOTczKeMBA4JqzKqGURHPRLaJCvuR8nDG+jhK9A==
+ dependencies:
+ "@parcel/fs" "2.13.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ lmdb "2.8.5"
+
+"@parcel/codeframe@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.13.3.tgz#1e3cc39f85948cc39e9f10584476ff13c0cd4f58"
+ integrity sha512-L/PQf+PT0xM8k9nc0B+PxxOYO2phQYnbuifu9o4pFRiqVmCtHztP+XMIvRJ2gOEXy3pgAImSPFVJ3xGxMFky4g==
+ dependencies:
+ chalk "^4.1.2"
+
+"@parcel/compressor-raw@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.13.3.tgz#7b479b0b42108433b1c48daa0dab6c6387b7be79"
+ integrity sha512-C6vjDlgTLjYc358i7LA/dqcL0XDQZ1IHXFw6hBaHHOfxPKW2T4bzUI6RURyToEK9Q1X7+ggDKqgdLxwp4veCFg==
+ dependencies:
+ "@parcel/plugin" "2.13.3"
+
+"@parcel/config-default@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.13.3.tgz#2d0498cf56cb162961e07b867d6f958f8aaaec64"
+ integrity sha512-WUsx83ic8DgLwwnL1Bua4lRgQqYjxiTT+DBxESGk1paNm1juWzyfPXEQDLXwiCTcWMQGiXQFQ8OuSISauVQ8dQ==
+ dependencies:
+ "@parcel/bundler-default" "2.13.3"
+ "@parcel/compressor-raw" "2.13.3"
+ "@parcel/namer-default" "2.13.3"
+ "@parcel/optimizer-css" "2.13.3"
+ "@parcel/optimizer-htmlnano" "2.13.3"
+ "@parcel/optimizer-image" "2.13.3"
+ "@parcel/optimizer-svgo" "2.13.3"
+ "@parcel/optimizer-swc" "2.13.3"
+ "@parcel/packager-css" "2.13.3"
+ "@parcel/packager-html" "2.13.3"
+ "@parcel/packager-js" "2.13.3"
+ "@parcel/packager-raw" "2.13.3"
+ "@parcel/packager-svg" "2.13.3"
+ "@parcel/packager-wasm" "2.13.3"
+ "@parcel/reporter-dev-server" "2.13.3"
+ "@parcel/resolver-default" "2.13.3"
+ "@parcel/runtime-browser-hmr" "2.13.3"
+ "@parcel/runtime-js" "2.13.3"
+ "@parcel/runtime-react-refresh" "2.13.3"
+ "@parcel/runtime-service-worker" "2.13.3"
+ "@parcel/transformer-babel" "2.13.3"
+ "@parcel/transformer-css" "2.13.3"
+ "@parcel/transformer-html" "2.13.3"
+ "@parcel/transformer-image" "2.13.3"
+ "@parcel/transformer-js" "2.13.3"
+ "@parcel/transformer-json" "2.13.3"
+ "@parcel/transformer-postcss" "2.13.3"
+ "@parcel/transformer-posthtml" "2.13.3"
+ "@parcel/transformer-raw" "2.13.3"
+ "@parcel/transformer-react-refresh-wrap" "2.13.3"
+ "@parcel/transformer-svg" "2.13.3"
+
+"@parcel/core@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.13.3.tgz#d64ec42157a70df6a3674e98f52eb156a103985b"
+ integrity sha512-SRZFtqGiaKHlZ2YAvf+NHvBFWS3GnkBvJMfOJM7kxJRK3M1bhbwJa/GgSdzqro5UVf9Bfj6E+pkdrRQIOZ7jMQ==
dependencies:
"@mischnic/json-sourcemap" "^0.1.0"
- "@parcel/cache" "2.8.2"
- "@parcel/diagnostic" "2.8.2"
- "@parcel/events" "2.8.2"
- "@parcel/fs" "2.8.2"
- "@parcel/graph" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/package-manager" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/cache" "2.13.3"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/events" "2.13.3"
+ "@parcel/feature-flags" "2.13.3"
+ "@parcel/fs" "2.13.3"
+ "@parcel/graph" "3.3.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/package-manager" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/profiler" "2.13.3"
+ "@parcel/rust" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
- "@parcel/workers" "2.8.2"
- abortcontroller-polyfill "^1.1.9"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ "@parcel/workers" "2.13.3"
base-x "^3.0.8"
browserslist "^4.6.6"
clone "^2.1.1"
- dotenv "^7.0.0"
- dotenv-expand "^5.1.0"
+ dotenv "^16.4.5"
+ dotenv-expand "^11.0.6"
json5 "^2.2.0"
- msgpackr "^1.5.4"
+ msgpackr "^1.9.9"
nullthrows "^1.1.1"
- semver "^5.7.1"
+ semver "^7.5.2"
-"@parcel/diagnostic@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.8.2.tgz#7a6ca8c537cd59570ebc44615e1637cfd9675698"
- integrity sha512-tGSMwM2rSYLjJW0fCd9gb3tNjfCX/83PZ10/5u2E33UZVkk8OIHsQmsrtq2H2g4oQL3rFxkfEx6nGPDGHwlx7A==
+"@parcel/diagnostic@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.13.3.tgz#4bc00a915984f8e649a58641d639767d029f72d8"
+ integrity sha512-C70KXLBaXLJvr7XCEVu8m6TqNdw1gQLxqg5BQ8roR62R4vWWDnOq8PEksxDi4Y8Z/FF4i3Sapv6tRx9iBNxDEg==
dependencies:
"@mischnic/json-sourcemap" "^0.1.0"
nullthrows "^1.1.1"
-"@parcel/events@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.8.2.tgz#9ef8d93f1a41369ac1685a1e2bbef7b76390259c"
- integrity sha512-o5etrsKm16y8iRPnjtEBNy4lD0WAigD66yt/RZl9Rx0vPVDly/63Rr9+BrXWVW7bJ7x0S0VVpWW4j3f/qZOsXg==
-
-"@parcel/fs-search@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.8.2.tgz#6d68fedac193ef1ab28d3bf4cb69a4c03f44b9a8"
- integrity sha512-ovQnupRm/MoE/tbgH0Ivknk0QYenXAewjcog+T5umDmUlTmnIRZjURrgDf5Xtw8T/CD5Xv+HmIXpJ9Ez/LzJpw==
- dependencies:
- detect-libc "^1.0.3"
-
-"@parcel/fs@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.8.2.tgz#380b76962f908cafec1fda6d4bb6ccda450325ab"
- integrity sha512-aN8znbMndSqn1xwZEmMblzqmJsxcExv2jKLl/a9RUHAP7LaPYcPZIykDL3YwGCiKTCzjmRpXnNoyosjFFeBaHA==
- dependencies:
- "@parcel/fs-search" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
+"@parcel/events@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.13.3.tgz#068bdd9e1d40f88cb8110d06be2bd4d5fb23c2ad"
+ integrity sha512-ZkSHTTbD/E+53AjUzhAWTnMLnxLEU5yRw0H614CaruGh+GjgOIKyukGeToF5Gf/lvZ159VrJCGE0Z5EpgHVkuQ==
+
+"@parcel/feature-flags@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/feature-flags/-/feature-flags-2.13.3.tgz#9664d46610a2744dd56677d26cf4fd45ab12928b"
+ integrity sha512-UZm14QpamDFoUut9YtCZSpG1HxPs07lUwUCpsAYL0PpxASD3oWJQxIJGfDZPa2272DarXDG9adTKrNXvkHZblw==
+
+"@parcel/fs@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.13.3.tgz#166e7dcdd2afbab201aaf5839f69a8e853da66e0"
+ integrity sha512-+MPWAt0zr+TCDSlj1LvkORTjfB/BSffsE99A9AvScKytDSYYpY2s0t4vtV9unSh0FHMS2aBCZNJ4t7KL+DcPIg==
+ dependencies:
+ "@parcel/feature-flags" "2.13.3"
+ "@parcel/rust" "2.13.3"
+ "@parcel/types-internal" "2.13.3"
+ "@parcel/utils" "2.13.3"
"@parcel/watcher" "^2.0.7"
- "@parcel/workers" "2.8.2"
+ "@parcel/workers" "2.13.3"
-"@parcel/graph@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.8.2.tgz#f5bb5664f50f6dcb435beb75d0e663879fce890d"
- integrity sha512-SLEvBQBgfkXgU4EBu30+CNanpuKjcNuEv/x8SwobCF0i3Rk+QKbe7T36bNR7727mao++2Ha69q93Dd9dTPw0kQ==
+"@parcel/graph@3.3.3":
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.3.3.tgz#9a48d22f8d6c1e961f2723d4d7343f5388b689bb"
+ integrity sha512-pxs4GauEdvCN8nRd6wG3st6LvpHske3GfqGwUSR0P0X0pBPI1/NicvXz6xzp3rgb9gPWfbKXeI/2IOTfIxxVfg==
dependencies:
+ "@parcel/feature-flags" "2.13.3"
nullthrows "^1.1.1"
-"@parcel/hash@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.8.2.tgz#f621431391cf873139125bacd4617c493c737cd7"
- integrity sha512-NBnP8Hu0xvAqAfZXRaMM66i8nJyxpKS86BbhwkbgTGbwO1OY87GERliHeREJfcER0E0ZzwNow7MNR8ZDm6IvJQ==
- dependencies:
- detect-libc "^1.0.3"
- xxhash-wasm "^0.4.2"
-
-"@parcel/logger@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.8.2.tgz#21df19cf2a084d247199b71a01511560a7ba98fc"
- integrity sha512-zlhK6QHxfFJMlVJxxcCw0xxBDrYPFPOhMxSD6p6b0z9Yct1l3NdpmfabgjKX8wnZmHokFsil6daleM+M80n2Ew==
+"@parcel/logger@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.13.3.tgz#0c91bb7fefa37b5dccd5cdfcd30cf52f5c56a1d9"
+ integrity sha512-8YF/ZhsQgd7ohQ2vEqcMD1Ag9JlJULROWRPGgGYLGD+twuxAiSdiFBpN3f+j4gQN4PYaLaIS/SwUFx11J243fQ==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/events" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/events" "2.13.3"
-"@parcel/markdown-ansi@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.8.2.tgz#cb453c70de9c1ea85e2650fb46abbdf2ccbafa9e"
- integrity sha512-5y29TXgRgG0ybuXaDsDk4Aofg/nDUeAAyVl9/toYCDDhxpQV4yZt8WNPu4PaNYKGLuNgXwsmz+ryZQHGmfbAIQ==
+"@parcel/markdown-ansi@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.13.3.tgz#05eec8407643d2c36f3511a37c38f08f7b236e24"
+ integrity sha512-B4rUdlNUulJs2xOQuDbN7Hq5a9roq8IZUcJ1vQ8PAv+zMGb7KCfqIIr/BSCDYGhayfAGBVWW8x55Kvrl1zrDYw==
dependencies:
- chalk "^4.1.0"
+ chalk "^4.1.2"
-"@parcel/namer-default@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.8.2.tgz#4106cffaa48359ce1ad4e504497a6d7d8db7935e"
- integrity sha512-sMLW/bDWXA6IE7TQKOsBnA5agZGNvZ9qIXKZEUTsTloUjMdAWI8NYA1s0i9HovnGxI5uGlgevrftK4S5V4AdkA==
+"@parcel/namer-default@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.13.3.tgz#a77ce846de8203d2a4b1f93666520b0ac8a90865"
+ integrity sha512-A2a5A5fuyNcjSGOS0hPcdQmOE2kszZnLIXof7UMGNkNkeC62KAG8WcFZH5RNOY3LT5H773hq51zmc2Y2gE5Rnw==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
nullthrows "^1.1.1"
-"@parcel/node-resolver-core@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.8.2.tgz#5113e476367aa9e48a021d13624e0d5ca68cb42f"
- integrity sha512-D/NJEz/h/C3RmUOWSTg0cLwG3uRVHY9PL+3YGO/c8tKu8PlS2j55XtntdiVfwkK+P6avLCnrJnv/gwTa79dOPw==
+"@parcel/node-resolver-core@3.4.3":
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.4.3.tgz#aa254b2f0ac9fd5790bfd353430f19ae3b0ee778"
+ integrity sha512-IEnMks49egEic1ITBp59VQyHzkSQUXqpU9hOHwqN3KoSTdZ6rEgrXcS3pa6tdXay4NYGlcZ88kFCE8i/xYoVCg==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@mischnic/json-sourcemap" "^0.1.0"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/fs" "2.13.3"
+ "@parcel/rust" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
- semver "^5.7.1"
+ semver "^7.5.2"
-"@parcel/optimizer-css@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.8.2.tgz#3d3be3303db776cc9acbcc82d9e0a8b6d67cde5c"
- integrity sha512-pQEuKhk0PJuYI3hrXlf4gpuuPy+MZUDzC44ulQM7kVcVJ0OofuJQQeHfTLE+v5wClFDd29ZQZ7RsLP5RyUQ+Lg==
+"@parcel/optimizer-css@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.13.3.tgz#504f75cdfde89f2463d06a8d18fbf861b2a352af"
+ integrity sha512-A8o9IVCv919vhv69SkLmyW2WjJR5WZgcMqV6L1uiGF8i8z18myrMhrp2JuSHx29PRT9uNyzNC4Xrd4StYjIhJg==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/utils" "2.13.3"
browserslist "^4.6.6"
- lightningcss "^1.16.1"
+ lightningcss "^1.22.1"
nullthrows "^1.1.1"
-"@parcel/optimizer-htmlnano@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.8.2.tgz#988c3bf6a7ca513ab8d0a3e41bbe1204eb27187c"
- integrity sha512-4+3wi+Yi+hsf5/LolX59JXFe/7bLpI6NetUBgtoxOVm/EzFg1NGSNOcrthzEcgGj6+MMSdzBAxRTPObAfDxJCA==
+"@parcel/optimizer-htmlnano@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.13.3.tgz#eaf0c011806d9856a64d4a96e9a30c970e3e003d"
+ integrity sha512-K4Uvg0Sy2pECP7pdvvbud++F0pfcbNkq+IxTrgqBX5HJnLEmRZwgdvZEKF43oMEolclMnURMQRGjRplRaPdbXg==
dependencies:
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
htmlnano "^2.0.0"
nullthrows "^1.1.1"
posthtml "^0.16.5"
- svgo "^2.4.0"
-
-"@parcel/optimizer-image@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.8.2.tgz#5d44a0b658db5a0ab7749edbe29ce118d5e09011"
- integrity sha512-/ICYG0smbMkli+su4m/ENQPxQDCPYYTJTjseKwl+t1vyj6wqNF99mNI4c0RE2TIPuDneGwSz7PlHhC2JmdgxfQ==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
- "@parcel/workers" "2.8.2"
- detect-libc "^1.0.3"
-"@parcel/optimizer-svgo@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.8.2.tgz#057c245900640b9e4f0f6f1a96d7ae6b4185ce17"
- integrity sha512-nFWyM+CBtgBixqknpbN4R92v8PK7Gjlrsb8vxN/IIr/3Pjk+DfoT51DnynhU7AixvDylYkgjjqrQ7uFYYl0OKA==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
- svgo "^2.4.0"
-
-"@parcel/optimizer-terser@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.8.2.tgz#9126bf66bc4d88fe5b2325eafd6fcbc431e5a284"
- integrity sha512-jFAOh9WaO6oNc8B9qDsCWzNkH7nYlpvaPn0w3ZzpMDi0HWD+w+xgO737rWLJWZapqUDSOs0Q/hDFEZ82/z0yxA==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+"@parcel/optimizer-image@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.13.3.tgz#7daac3ac2d13c769d84ee0d982132f86296fdde0"
+ integrity sha512-wlDUICA29J4UnqkKrWiyt68g1e85qfYhp4zJFcFJL0LX1qqh1QwsLUz3YJ+KlruoqPxJSFEC8ncBEKiVCsqhEQ==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ "@parcel/workers" "2.13.3"
+
+"@parcel/optimizer-svgo@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.13.3.tgz#8afd39b8903bee52dd98ae349aca7e27e9fcdaa1"
+ integrity sha512-piIKxQKzhZK54dJR6yqIcq+urZmpsfgUpLCZT3cnWlX4ux5+S2iN66qqZBs0zVn+a58LcWcoP4Z9ieiJmpiu2w==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
+
+"@parcel/optimizer-swc@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.13.3.tgz#0ec2a4b8fc87c758fed8aba3a9145d78ac0449e9"
+ integrity sha512-zNSq6oWqLlW8ksPIDjM0VgrK6ZAJbPQCDvs1V+p0oX3CzEe85lT5VkRpnfrN1+/vvEJNGL8e60efHKpI+rXGTA==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/utils" "2.13.3"
+ "@swc/core" "^1.7.26"
nullthrows "^1.1.1"
- terser "^5.2.0"
-
-"@parcel/package-manager@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.8.2.tgz#fd7886bb4f828929ffed93cfc345cf160b540d4c"
- integrity sha512-hx4Imi0yhsSS0aNZkEANPYNNKqBuR63EUNWSxMyHh4ZOvbHoOXnMn1ySGdx6v0oi9HvKymNsLMQ1T5CuI4l4Bw==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/fs" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
- "@parcel/workers" "2.8.2"
- semver "^5.7.1"
-
-"@parcel/packager-css@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.8.2.tgz#f7a07aa9625edbaf0c5c07ee8b5be77ab64cc0d7"
- integrity sha512-l2fR5qr1moUWLOqQZPxtH6DBKbaKcxzEPAmQ+f15dHt8eQxU15MyQ4DHX41b5B7HwaumgCqe0NkuTF3DedpJKg==
- dependencies:
- "@parcel/plugin" "2.8.2"
+
+"@parcel/package-manager@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.13.3.tgz#0106ca0f94f569c9fa00f538c5bba6e9ac6e9e37"
+ integrity sha512-FLNI5OrZxymGf/Yln0E/kjnGn5sdkQAxW7pQVdtuM+5VeN75yibJRjsSGv88PvJ+KvpD2ANgiIJo1RufmoPcww==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/fs" "2.13.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/node-resolver-core" "3.4.3"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ "@parcel/workers" "2.13.3"
+ "@swc/core" "^1.7.26"
+ semver "^7.5.2"
+
+"@parcel/packager-css@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.13.3.tgz#ee3c66884f1c7dc17489cefa63e03d5c57cf4bd7"
+ integrity sha512-ghDqRMtrUwaDERzFm9le0uz2PTeqqsjsW0ihQSZPSAptElRl9o5BR+XtMPv3r7Ui0evo+w35gD55oQCJ28vCig==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/utils" "2.13.3"
+ lightningcss "^1.22.1"
nullthrows "^1.1.1"
-"@parcel/packager-html@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.8.2.tgz#17b47368aebf675c906d036b4ac245ceab39102a"
- integrity sha512-/oiTsKZ5OyF9OwAVGHANNuW2TB3k3cVub1QfttSKJgG3sAhrOifb1dP8zBHMxvUrB0CJdYhGlgi1Jth9kjACCg==
+"@parcel/packager-html@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.13.3.tgz#00c080d87cd47d77730b9000224acef864d17abe"
+ integrity sha512-jDLnKSA/EzVEZ3/aegXO3QJ/Ij732AgBBkIQfeC8tUoxwVz5b3HiPBAjVjcUSfZs7mdBSHO+ELWC3UD+HbsIrQ==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
posthtml "^0.16.5"
-"@parcel/packager-js@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.8.2.tgz#5378107d81847c654f1c3534b4638470a21c4419"
- integrity sha512-48LtHP4lJn8J1aBeD4Ix/YjsRxrBUkzbx7czdUeRh2PlCqY4wwIhciVlEFipj/ANr3ieSX44lXyVPk/ttnSdrw==
+"@parcel/packager-js@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.13.3.tgz#6e9fbb6a8cab064ab7021bb6b73f8934e4bc6576"
+ integrity sha512-0pMHHf2zOn7EOJe88QJw5h/wcV1bFfj6cXVcE55Wa8GX3V+SdCgolnlvNuBcRQ1Tlx0Xkpo+9hMFVIQbNQY6zw==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
globals "^13.2.0"
nullthrows "^1.1.1"
-"@parcel/packager-raw@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.8.2.tgz#380b91e52f37f41686370bb8ea9ffa9583f380a9"
- integrity sha512-dGonfFptNV1lgqKaD17ecXBUyIfoG6cJI1cCE1sSoYCEt7r+Rq56X/Gq8oiA3+jjMC7QTls+SmFeMZh26fl77Q==
+"@parcel/packager-raw@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.13.3.tgz#89c5bac28f59cbf9ddfb2a561575b3d19e6a021b"
+ integrity sha512-AWu4UB+akBdskzvT3KGVHIdacU9f7cI678DQQ1jKQuc9yZz5D0VFt3ocFBOmvDfEQDF0uH3jjtJR7fnuvX7Biw==
dependencies:
- "@parcel/plugin" "2.8.2"
+ "@parcel/plugin" "2.13.3"
-"@parcel/packager-svg@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.8.2.tgz#bf002babdb061f045bf98736b08f4b8d6cc17ecf"
- integrity sha512-k7LymTJ4XQA+UcPwFYqJfWs5/Awa4GirNxRWfiFflLqH3F1XvMiKSCIQXmrDM6IaeIqqDDsu6+P5U6YDAzzM3A==
+"@parcel/packager-svg@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.13.3.tgz#aa569e80de31f1869381cd30a7e091c26c31b7a8"
+ integrity sha512-tKGRiFq/4jh5u2xpTstNQ7gu+RuZWzlWqpw5NaFmcKe6VQe5CMcS499xTFoREAGnRvevSeIgC38X1a+VOo+/AA==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
posthtml "^0.16.4"
-"@parcel/plugin@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.8.2.tgz#f8d147cf32e52f7feff245d64d640890a18a6fd9"
- integrity sha512-YG7TWfKsoNm72jbz3b3TLec0qJHVkuAWSzGzowdIhX37cP1kRfp6BU2VcH+qYPP/KYJLzhcZa9n3by147mGcxw==
+"@parcel/packager-wasm@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.13.3.tgz#fa179e5d47e5d96ccf2f9b9170288942afccc7f1"
+ integrity sha512-SZB56/b230vFrSehVXaUAWjJmWYc89gzb8OTLkBm7uvtFtov2J1R8Ig9TTJwinyXE3h84MCFP/YpQElSfoLkJw==
+ dependencies:
+ "@parcel/plugin" "2.13.3"
+
+"@parcel/plugin@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.13.3.tgz#7542a161672821a1cb104ad09eb58695c53268c8"
+ integrity sha512-cterKHHcwg6q11Gpif/aqvHo056TR+yDVJ3fSdiG2xr5KD1VZ2B3hmofWERNNwjMcnR1h9Xq40B7jCKUhOyNFA==
dependencies:
- "@parcel/types" "2.8.2"
+ "@parcel/types" "2.13.3"
-"@parcel/reporter-cli@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.8.2.tgz#bfd63b8bfb0bd72e483f4de496af6dc8e819a97e"
- integrity sha512-OIRlBqpKqPpMWRHATT8az8fUAqfceLWlWqgX/CW5cG1i6gefbBWFq2qYxDVBEk1bPDLIUCtqNLhfO8hLyweMjA==
+"@parcel/profiler@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.13.3.tgz#4a375df8f8e1a0a0ab7e73e3562e4e28e9d7cdd7"
+ integrity sha512-ok6BwWSLvyHe5TuSXjSacYnDStFgP5Y30tA9mbtWSm0INDsYf+m5DqzpYPx8U54OaywWMK8w3MXUClosJX3aPA==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
- chalk "^4.1.0"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/events" "2.13.3"
+ "@parcel/types-internal" "2.13.3"
+ chrome-trace-event "^1.0.2"
+
+"@parcel/reporter-cli@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.13.3.tgz#46dcbefeaaf9281cc485fb4b0cc81e2c564abd6a"
+ integrity sha512-EA5tKt/6bXYNMEavSs35qHlFdx6cZmRazlZxPBgxPePQYoouNAPMNLUOEQozaPhz9f5fvNDN7EHOFaAWcdO2LA==
+ dependencies:
+ "@parcel/plugin" "2.13.3"
+ "@parcel/types" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ chalk "^4.1.2"
term-size "^2.2.1"
-"@parcel/reporter-dev-server@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.8.2.tgz#f822e694ba9cbfce52ee2b4157b186819c48ce40"
- integrity sha512-A16pAQSAT8Yilo1yCPZcrtWbRhwyiMopEz0mOyGobA1ZDy6B3j4zjobIWzdPQCSIY7+v44vtWMDGbdGrxt6M1Q==
+"@parcel/reporter-dev-server@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.13.3.tgz#af5a9c5f8bf191e03ea95d4cdb59341c9851c83e"
+ integrity sha512-ZNeFp6AOIQFv7mZIv2P5O188dnZHNg0ymeDVcakfZomwhpSva2dFNS3AnvWo4eyWBlUxkmQO8BtaxeWTs7jAuA==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
-"@parcel/resolver-default@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.8.2.tgz#8a3e9721c82951700e3cc974c2a482f1d52a44e0"
- integrity sha512-mlowJMjFjyps9my8wd13kgeExJ5EgkPAuIxRSSWW+GPR7N3uA5DBJ+SB/CzdhCkPrXR6kwVWxNkkOch38pzOQQ==
+"@parcel/reporter-tracer@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.13.3.tgz#4e60b56877d6bf7f0c468b7f75ff57d61ad11a1a"
+ integrity sha512-aBsVPI8jLZTDkFYrI69GxnsdvZKEYerkPsu935LcX9rfUYssOnmmUP+3oI+8fbg+qNjJuk9BgoQ4hCp9FOphMQ==
dependencies:
- "@parcel/node-resolver-core" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ chrome-trace-event "^1.0.3"
+ nullthrows "^1.1.1"
-"@parcel/runtime-browser-hmr@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.8.2.tgz#b927aeba5bf76ec43731caf9c11cd09f504304e1"
- integrity sha512-VRM8mxakMglqRB0f5eAuwCigjJ5vlaJMwHy+JuzOsn/yVSELOb+6psRKl2B9hhxp9sJPt4IU6KDdH2IOrgx87Q==
+"@parcel/resolver-default@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.13.3.tgz#19987a465ad83a163b3c747e56447c6fd9a905f0"
+ integrity sha512-urBZuRALWT9pFMeWQ8JirchLmsQEyI9lrJptiwLbJWrwvmlwSUGkcstmPwoNRf/aAQjICB7ser/247Vny0pFxA==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/node-resolver-core" "3.4.3"
+ "@parcel/plugin" "2.13.3"
-"@parcel/runtime-js@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.8.2.tgz#f5a221df97c35c5660d2d9e3f5da607ba24e5276"
- integrity sha512-Vk3Gywn2M9qP5X4lF6tu8QXP4xNI90UOSOhKHQ9W5pCu+zvD0Gdvu7qwQPFuFjIAq08xU7+PvZzGnlnM+8NyRw==
+"@parcel/runtime-browser-hmr@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.13.3.tgz#9d2ad14b995b6f357aa4a71e6248defa8d79be5d"
+ integrity sha512-EAcPojQFUNUGUrDk66cu3ySPO0NXRVS5CKPd4QrxPCVVbGzde4koKu8krC/TaGsoyUqhie8HMnS70qBP0GFfcQ==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
+
+"@parcel/runtime-js@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.13.3.tgz#847623b17cb9f2e69db3e860ee1971f591175c27"
+ integrity sha512-62OucNAnxb2Q0uyTFWW/0Hvv2DJ4b5H6neh/YFu2/wmxaZ37xTpEuEcG2do7KW54xE5DeLP+RliHLwi4NvR3ww==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
-"@parcel/runtime-react-refresh@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.8.2.tgz#107eed92bc5b3ac30ddeb45489b7813720c415e6"
- integrity sha512-JjaMvBVx6v0zB1KHa7AopciIsl3FpjUMttr2tb6L7lzocti2muQGE6GBfinXOmD5oERwCf8HwGJ8SNFcIF0rKA==
+"@parcel/runtime-react-refresh@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.13.3.tgz#7d80c130effffabe3977ded470ad7d97401012ea"
+ integrity sha512-PYZ1klpJVwqE3WuifILjtF1dugtesHEuJcXYZI85T6UoRSD5ctS1nAIpZzT14Ga1lRt/jd+eAmhWL1l3m/Vk1Q==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
react-error-overlay "6.0.9"
- react-refresh "^0.9.0"
+ react-refresh ">=0.9 <=0.14"
-"@parcel/runtime-service-worker@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.8.2.tgz#f8d2d5665cdb49a423efdf4079f436d3598e5775"
- integrity sha512-KSxbOKV8nuH5JjFvcUlCtBYnVVlmxreXpMxRUPphPwJnyxRGA4E0jofbQxWY5KPgp7x/ZnZU/nyzCvqURH3kHA==
+"@parcel/runtime-service-worker@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.13.3.tgz#759c2fc71614187ea375dac509b7c44f3c4d919c"
+ integrity sha512-BjMhPuT7Us1+YIo31exPRwomPiL+jrZZS5UUAwlEW2XGHDceEotzRM94LwxeFliCScT4IOokGoxixm19qRuzWg==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
+"@parcel/rust@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.13.3.tgz#924ef166e0a16923d01c83df8a65a7a726f77e3a"
+ integrity sha512-dLq85xDAtzr3P5200cvxk+8WXSWauYbxuev9LCPdwfhlaWo/JEj6cu9seVdWlkagjGwkoV1kXC+GGntgUXOLAQ==
+
"@parcel/source-map@^2.1.1":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782"
@@ -883,191 +997,360 @@
dependencies:
detect-libc "^1.0.3"
-"@parcel/transformer-babel@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.8.2.tgz#277416b6bb4e691869e3c7f9dff0abeec4462841"
- integrity sha512-oL2BpvrPMwFiU9jUZ9UYGD1gRgvq9jLsOq+/PJl4GvPbOBVedIBE2nbHP/mYuWRpRnTTTiJQ/ItyOS0R2VQl7A==
+"@parcel/transformer-babel@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.13.3.tgz#a751ccaefd50836be3d01cc2afd5c0982708d5a7"
+ integrity sha512-ikzK9f5WTFrdQsPitQgjCPH6HmVU8AQPRemIJ2BndYhtodn5PQut5cnSvTrqax8RjYvheEKCQk/Zb/uR7qgS3g==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/utils" "2.13.3"
browserslist "^4.6.6"
json5 "^2.2.0"
nullthrows "^1.1.1"
- semver "^5.7.0"
+ semver "^7.5.2"
-"@parcel/transformer-css@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.8.2.tgz#c00b48657a7fe35701686972f68633c72259cf87"
- integrity sha512-q8UDlX/TTCbuFBMU45q12/p92JNIz8MHkkH104dWDzXbRtvMKMg8jgNmr8S2bouZjtXMsSb2c54EO88DSM9G4A==
+"@parcel/transformer-css@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.13.3.tgz#bb9bfd26798ac955febc7a4eba900a1593321433"
+ integrity sha512-zbrNURGph6JeVADbGydyZ7lcu/izj41kDxQ9xw4RPRW/3rofQiTU0OTREi+uBWiMENQySXVivEdzHA9cA+aLAA==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
+ "@parcel/utils" "2.13.3"
browserslist "^4.6.6"
- lightningcss "^1.16.1"
+ lightningcss "^1.22.1"
nullthrows "^1.1.1"
-"@parcel/transformer-html@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.8.2.tgz#1d37fd56cde779d8a6f2074dfa55d051a17a27a4"
- integrity sha512-QDgDw6+DAcllaRQiRteMX0VgPIsxRUTXFS8jcXhbGio41LbUkLcT09M04L/cfJAAzvIKhXqiOxfNnyajTvCPDQ==
+"@parcel/transformer-html@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.13.3.tgz#969398bdce3f1a295462910976cf2f8d45a83c2d"
+ integrity sha512-Yf74FkL9RCCB4+hxQRVMNQThH9+fZ5w0NLiQPpWUOcgDEEyxTi4FWPQgEBsKl/XK2ehdydbQB9fBgPQLuQxwPg==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
nullthrows "^1.1.1"
posthtml "^0.16.5"
- posthtml-parser "^0.10.1"
+ posthtml-parser "^0.12.1"
posthtml-render "^3.0.0"
- semver "^5.7.1"
+ semver "^7.5.2"
+ srcset "4"
-"@parcel/transformer-image@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.8.2.tgz#3072081c21a1de9a1c3a5c0fed7d5def65f1338d"
- integrity sha512-B/D9v/BVyN5jxoi+wHPbIRfMIylmC6adp8GP+BtChjbuRjukgGT8RlAVz4vDm1l0bboeyPL2IuoWRQgXKGuPVg==
+"@parcel/transformer-image@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.13.3.tgz#e3ee409baa036e5f60036663ad87ff74ff499db3"
+ integrity sha512-wL1CXyeFAqbp2wcEq/JD3a/tbAyVIDMTC6laQxlIwnVV7dsENhK1qRuJZuoBdixESeUpFQSmmQvDIhcfT/cUUg==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
- "@parcel/workers" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ "@parcel/workers" "2.13.3"
nullthrows "^1.1.1"
-"@parcel/transformer-js@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.8.2.tgz#cb7b954836011656f1807b2da1900377ebd16df6"
- integrity sha512-mLksi6gu/20JdCFDNPl7Y0HTwJOAvf2ybC2HaJcy69PJCeUrrstgiFTjsCwv1eKcesgEHi9kKX+sMHVAH3B/dA==
+"@parcel/transformer-js@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.13.3.tgz#e53be3b860fb2dd2430bbd7d1089365492255209"
+ integrity sha512-KqfNGn1IHzDoN2aPqt4nDksgb50Xzcny777C7A7hjlQ3cmkjyJrixYjzzsPaPSGJ+kJpknh3KE8unkQ9mhFvRQ==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/utils" "2.8.2"
- "@parcel/workers" "2.8.2"
- "@swc/helpers" "^0.4.12"
+ "@parcel/utils" "2.13.3"
+ "@parcel/workers" "2.13.3"
+ "@swc/helpers" "^0.5.0"
browserslist "^4.6.6"
- detect-libc "^1.0.3"
nullthrows "^1.1.1"
- regenerator-runtime "^0.13.7"
- semver "^5.7.1"
+ regenerator-runtime "^0.14.1"
+ semver "^7.5.2"
-"@parcel/transformer-json@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.8.2.tgz#f184290c35ded6124fdd222e40e1c27e9e2726b6"
- integrity sha512-eZuaY5tMxcMDJwpHJbPVTgSaBIO4mamwAa3VulN9kRRaf29nc+Q0iM7zMFVHWFQAi/mZZ194IIQXbDX3r6oSSQ==
+"@parcel/transformer-json@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.13.3.tgz#14ae4bcf572babe58a7aa204b7996ceb5a790698"
+ integrity sha512-rrq0ab6J0w9ePtsxi0kAvpCmrUYXXAx1Z5PATZakv89rSYbHBKEdXxyCoKFui/UPVCUEGVs5r0iOFepdHpIyeA==
dependencies:
- "@parcel/plugin" "2.8.2"
+ "@parcel/plugin" "2.13.3"
json5 "^2.2.0"
-"@parcel/transformer-postcss@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.8.2.tgz#ca1db56e639a6fcef134128cf8c172999c21bc10"
- integrity sha512-0Vb4T2e0QinNDps1/PxYsZwEzWieVxoW++AAUD3gzg0MfSyRc72MPc27CLOnziiRDyOUl+62gqpnNzq9xaKExA==
+"@parcel/transformer-postcss@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.13.3.tgz#26d67676ceb313f20097f599628b0da647ea497b"
+ integrity sha512-AIiWpU0QSFBrPcYIqAnhqB8RGE6yHFznnxztfg1t2zMSOnK3xoU6xqYKv8H/MduShGGrC3qVOeDfM8MUwzL3cw==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
+ "@parcel/utils" "2.13.3"
clone "^2.1.1"
nullthrows "^1.1.1"
postcss-value-parser "^4.2.0"
- semver "^5.7.1"
+ semver "^7.5.2"
-"@parcel/transformer-posthtml@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.8.2.tgz#efcb8554211facbc70cc9e53c125d5ae31b26bff"
- integrity sha512-Ub7o6QlH7+xHHHdhvR7MxTqjyLVqeJopPSzy4yP+Bd72tWVjaVm7f76SUl+p7VjhLTMkmczr9OxG3k0SFHEbGw==
+"@parcel/transformer-posthtml@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.13.3.tgz#2599df5226aa41b9411bcd816bcbfd2a073b8d39"
+ integrity sha512-5GSLyccpHASwFAu3uJ83gDIBSvfsGdVmhJvy0Vxe+K1Fklk2ibhvvtUHMhB7mg6SPHC+R9jsNc3ZqY04ZLeGjw==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
posthtml "^0.16.5"
- posthtml-parser "^0.10.1"
+ posthtml-parser "^0.12.1"
posthtml-render "^3.0.0"
- semver "^5.7.1"
+ semver "^7.5.2"
-"@parcel/transformer-raw@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.8.2.tgz#f463f2bb3c43059c0881381fb1d0453dbf8133aa"
- integrity sha512-xSzyZtrfisbx0R7xkuFJ/FksKyWaUFN18F9/0bLF8wo5LrOTQoYQatjun7/Rbq5mELBK/0ZPp7uJ02OqLRd2mA==
+"@parcel/transformer-raw@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.13.3.tgz#6a2eb2201f5dd13c46e10d0aa1c1749d1165e6f3"
+ integrity sha512-BFsAbdQF0l8/Pdb7dSLJeYcd8jgwvAUbHgMink2MNXJuRUvDl19Gns8jVokU+uraFHulJMBj40+K/RTd33in4g==
dependencies:
- "@parcel/plugin" "2.8.2"
+ "@parcel/plugin" "2.13.3"
-"@parcel/transformer-react-refresh-wrap@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.8.2.tgz#26cde09bcef82ac6b2a2e1ce89172f8f622aef7b"
- integrity sha512-UXBILYFXaj5zh1DzoYXoS3Wuq1+6WjoRQaFTUA5xrF3pjJb6LAXxWru3R20zR5INHIZXPxdQJB0b+epnmyjK4w==
+"@parcel/transformer-react-refresh-wrap@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.13.3.tgz#45d69ad21940699cf74984bdc74dc8aceb725f65"
+ integrity sha512-mOof4cRyxsZRdg8kkWaFtaX98mHpxUhcGPU+nF9RQVa9q737ItxrorsPNR9hpZAyE2TtFNflNW7RoYsgvlLw8w==
dependencies:
- "@parcel/plugin" "2.8.2"
- "@parcel/utils" "2.8.2"
- react-refresh "^0.9.0"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ react-refresh ">=0.9 <=0.14"
-"@parcel/transformer-svg@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.8.2.tgz#850fef81cd9822f111c123b4b0c1024b3d58bcc3"
- integrity sha512-FyliRrNHOF6tGzwHSzA2CTbkq3iMvS27eozf1kFj6gbO8gfJ5HXYoppQrTb237YZ/WXCHqe/3HVmGyJDZiLr+Q==
+"@parcel/transformer-svg@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.13.3.tgz#dabb0f9d23071d36d21e2e460111d5ed0fdb23e3"
+ integrity sha512-9jm7ZF4KHIrGLWlw/SFUz5KKJ20nxHvjFAmzde34R9Wu+F1BOjLZxae7w4ZRwvIc+UVOUcBBQFmhSVwVDZg6Dw==
dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/plugin" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/plugin" "2.13.3"
+ "@parcel/rust" "2.13.3"
nullthrows "^1.1.1"
posthtml "^0.16.5"
- posthtml-parser "^0.10.1"
+ posthtml-parser "^0.12.1"
posthtml-render "^3.0.0"
- semver "^5.7.1"
+ semver "^7.5.2"
-"@parcel/types@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.8.2.tgz#1a2cc2ec20a52f42dabd9260dbb912b927e2d75d"
- integrity sha512-HAYhokWxM10raIhqaYj9VR9eAvJ+xP2sNfQ1IcQybHpq3qblcBe/4jDeuUpwIyKeQ4gorp7xY+q8KDoR20j43w==
+"@parcel/types-internal@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/types-internal/-/types-internal-2.13.3.tgz#dbbfefeac3ce0e735dcf82bd171115e239d31692"
+ integrity sha512-Lhx0n+9RCp+Ipktf/I+CLm3zE9Iq9NtDd8b2Vr5lVWyoT8AbzBKIHIpTbhLS4kjZ80L3I6o93OYjqAaIjsqoZw==
dependencies:
- "@parcel/cache" "2.8.2"
- "@parcel/diagnostic" "2.8.2"
- "@parcel/fs" "2.8.2"
- "@parcel/package-manager" "2.8.2"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/feature-flags" "2.13.3"
"@parcel/source-map" "^2.1.1"
- "@parcel/workers" "2.8.2"
utility-types "^3.10.0"
-"@parcel/utils@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.8.2.tgz#7e917d2ebd5326e12e878858a416e50706bc804d"
- integrity sha512-Ufax7wZxC9FNsUpR0EU7Z22LEY/q9jjsDTwswctCdfpWb7TE/NudOfM9myycfRvwBVEYN50lPbkt1QltEVnXQQ==
+"@parcel/types@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.13.3.tgz#cb59dd663a945f85eea3764364bb47066023d8a9"
+ integrity sha512-+RpFHxx8fy8/dpuehHUw/ja9PRExC3wJoIlIIF42E7SLu2SvlTHtKm6EfICZzxCXNEBzjoDbamCRcN0nmTPlhw==
+ dependencies:
+ "@parcel/types-internal" "2.13.3"
+ "@parcel/workers" "2.13.3"
+
+"@parcel/utils@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.13.3.tgz#70199960d84a7c0c0bc813799dd6dab0571e2e59"
+ integrity sha512-yxY9xw2wOUlJaScOXYZmMGoZ4Ck4Kqj+p6Koe5kLkkWM1j98Q0Dj2tf/mNvZi4yrdnlm+dclCwNRnuE8Q9D+pw==
dependencies:
- "@parcel/codeframe" "2.8.2"
- "@parcel/diagnostic" "2.8.2"
- "@parcel/hash" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/markdown-ansi" "2.8.2"
+ "@parcel/codeframe" "2.13.3"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/markdown-ansi" "2.13.3"
+ "@parcel/rust" "2.13.3"
"@parcel/source-map" "^2.1.1"
- chalk "^4.1.0"
+ chalk "^4.1.2"
+ nullthrows "^1.1.1"
+
+"@parcel/watcher-android-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
+ integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==
+
+"@parcel/watcher-darwin-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f"
+ integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==
+
+"@parcel/watcher-darwin-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb"
+ integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==
+
+"@parcel/watcher-freebsd-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82"
+ integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==
+
+"@parcel/watcher-linux-arm-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42"
+ integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==
+
+"@parcel/watcher-linux-arm-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4"
+ integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03"
+ integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==
+
+"@parcel/watcher-linux-arm64-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732"
+ integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==
+
+"@parcel/watcher-linux-x64-glibc@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d"
+ integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==
+
+"@parcel/watcher-linux-x64-musl@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef"
+ integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==
+
+"@parcel/watcher-win32-arm64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154"
+ integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==
+
+"@parcel/watcher-win32-ia32@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220"
+ integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==
+
+"@parcel/watcher-win32-x64@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7"
+ integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==
"@parcel/watcher@^2.0.7":
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.7.tgz#c95fe1370e8c6237cb9729c9c075264acc7e21a5"
- integrity sha512-gc3hoS6e+2XdIQ4HHljDB1l0Yx2EWh/sBBtCEFNKGSMlwASWeAQsOY/fPbxOBcZ/pg0jBh4Ga+4xHlZc4faAEQ==
- dependencies:
- node-addon-api "^3.2.1"
- node-gyp-build "^4.3.0"
-
-"@parcel/workers@2.8.2":
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.2.tgz#7d170bd153e35ebd7fb59f239930bd5669babe7d"
- integrity sha512-Eg6CofIrJSNBa2fjXwvnzVLPKwR/6fkfQTFAm3Jl+4JYLVknBtTSFzQNp/Fa+HUEG889H9ucTk2CBi/fVPBAFw==
- dependencies:
- "@parcel/diagnostic" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/types" "2.8.2"
- "@parcel/utils" "2.8.2"
- chrome-trace-event "^1.0.2"
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10"
+ integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==
+ dependencies:
+ detect-libc "^1.0.3"
+ is-glob "^4.0.3"
+ micromatch "^4.0.5"
+ node-addon-api "^7.0.0"
+ optionalDependencies:
+ "@parcel/watcher-android-arm64" "2.5.0"
+ "@parcel/watcher-darwin-arm64" "2.5.0"
+ "@parcel/watcher-darwin-x64" "2.5.0"
+ "@parcel/watcher-freebsd-x64" "2.5.0"
+ "@parcel/watcher-linux-arm-glibc" "2.5.0"
+ "@parcel/watcher-linux-arm-musl" "2.5.0"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.0"
+ "@parcel/watcher-linux-arm64-musl" "2.5.0"
+ "@parcel/watcher-linux-x64-glibc" "2.5.0"
+ "@parcel/watcher-linux-x64-musl" "2.5.0"
+ "@parcel/watcher-win32-arm64" "2.5.0"
+ "@parcel/watcher-win32-ia32" "2.5.0"
+ "@parcel/watcher-win32-x64" "2.5.0"
+
+"@parcel/workers@2.13.3":
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.13.3.tgz#781bd062efe9346b7ac9f883b91e8fc6e8f6bda1"
+ integrity sha512-oAHmdniWTRwwwsKbcF4t3VjOtKN+/W17Wj5laiYB+HLkfsjGTfIQPj3sdXmrlBAGpI4omIcvR70PHHXnfdTfwA==
+ dependencies:
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/profiler" "2.13.3"
+ "@parcel/types-internal" "2.13.3"
+ "@parcel/utils" "2.13.3"
nullthrows "^1.1.1"
-"@swc/helpers@^0.4.12":
- version "0.4.14"
- resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74"
- integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==
- dependencies:
- tslib "^2.4.0"
+"@swc/core-darwin-arm64@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz#faaaab19b4a039ae67ef661c0144a6f20fe8a78e"
+ integrity sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==
+
+"@swc/core-darwin-x64@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz#754600f453abd24471c202d48836f1161d798f49"
+ integrity sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==
+
+"@swc/core-linux-arm-gnueabihf@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz#b0f43c482d0d1819b382a4eb4a0733ce2e386257"
+ integrity sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==
+
+"@swc/core-linux-arm64-gnu@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz#e02a9e22c25ba85ef00335742e549e06284cf33a"
+ integrity sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==
+
+"@swc/core-linux-arm64-musl@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz#3a0530af8f8bd3717f2f1bd8a2f5183fc58d4cf1"
+ integrity sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==
+
+"@swc/core-linux-x64-gnu@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz#5eb4d282b047a22896ab1d4627403be4c3e4fa6a"
+ integrity sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==
+
+"@swc/core-linux-x64-musl@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz#890f2eda3e67ccc6817cdd04eff91e6ad9e761c4"
+ integrity sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==
+
+"@swc/core-win32-arm64-msvc@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz#4ea7b2a2fab47f801d31ea8b001a141efaa5e6bf"
+ integrity sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==
+
+"@swc/core-win32-ia32-msvc@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz#729102669ccdb72e69884cce58e3686ac63d6f36"
+ integrity sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==
+
+"@swc/core-win32-x64-msvc@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz#7d665a7c69642861aed850ecb0cdf5d87197edda"
+ integrity sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==
+
+"@swc/core@^1.7.26":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.10.1.tgz#16b3b8284bafb0ecabb253925796883971e5a761"
+ integrity sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+ "@swc/types" "^0.1.17"
+ optionalDependencies:
+ "@swc/core-darwin-arm64" "1.10.1"
+ "@swc/core-darwin-x64" "1.10.1"
+ "@swc/core-linux-arm-gnueabihf" "1.10.1"
+ "@swc/core-linux-arm64-gnu" "1.10.1"
+ "@swc/core-linux-arm64-musl" "1.10.1"
+ "@swc/core-linux-x64-gnu" "1.10.1"
+ "@swc/core-linux-x64-musl" "1.10.1"
+ "@swc/core-win32-arm64-msvc" "1.10.1"
+ "@swc/core-win32-ia32-msvc" "1.10.1"
+ "@swc/core-win32-x64-msvc" "1.10.1"
+
+"@swc/counter@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
+ integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
+
+"@swc/helpers@^0.5.0":
+ version "0.5.15"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
+ integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
+ dependencies:
+ tslib "^2.8.0"
+
+"@swc/types@^0.1.17":
+ version "0.1.17"
+ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.17.tgz#bd1d94e73497f27341bf141abdf4c85230d41e7c"
+ integrity sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==
+ dependencies:
+ "@swc/counter" "^0.1.3"
"@trysound/sax@0.2.0":
version "0.2.0"
@@ -1082,34 +1365,15 @@
"@types/minimatch" "*"
"@types/node" "*"
-"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
- integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
-
-"@types/istanbul-lib-report@*":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
- integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
- dependencies:
- "@types/istanbul-lib-coverage" "*"
-
-"@types/istanbul-reports@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
- integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
- dependencies:
- "@types/istanbul-lib-report" "*"
-
"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6":
- version "7.0.11"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
- integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
+ version "7.0.15"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/lodash@^4.14.182":
- version "4.14.191"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
- integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+ version "4.17.13"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb"
+ integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==
"@types/minimatch@*":
version "5.1.2"
@@ -1117,36 +1381,21 @@
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
"@types/node@*":
- version "16.11.7"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42"
- integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==
-
-"@types/parse-json@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+ version "22.10.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9"
+ integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
+ dependencies:
+ undici-types "~6.20.0"
"@types/prettier@^2.6.1":
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e"
- integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==
-
-"@types/yargs-parser@*":
- version "20.2.1"
- resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
- integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==
-
-"@types/yargs@^16.0.0":
- version "16.0.4"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977"
- integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==
- dependencies:
- "@types/yargs-parser" "*"
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
+ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
"@types/yauzl@^2.9.1":
- version "2.9.2"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
- integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
+ version "2.10.3"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
+ integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
dependencies:
"@types/node" "*"
@@ -1155,16 +1404,6 @@
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
-abortcontroller-polyfill@^1.1.9:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5"
- integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==
-
-acorn@^8.5.0:
- version "8.8.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
- integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
-
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -1172,11 +1411,6 @@ agent-base@6:
dependencies:
debug "4"
-alphanum-sort@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -1212,14 +1446,15 @@ argparse@^2.0.1:
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
assert@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32"
- integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd"
+ integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==
dependencies:
- es6-object-assign "^1.1.0"
- is-nan "^1.2.1"
- object-is "^1.0.1"
- util "^0.12.0"
+ call-bind "^1.0.2"
+ is-nan "^1.3.2"
+ object-is "^1.1.5"
+ object.assign "^4.1.4"
+ util "^0.12.5"
ast-types@0.15.2:
version "0.15.2"
@@ -1228,6 +1463,11 @@ ast-types@0.15.2:
dependencies:
tslib "^2.0.1"
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
autoprefixer@^10.4.20:
version "10.4.20"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
@@ -1240,10 +1480,12 @@ autoprefixer@^10.4.20:
picocolors "^1.0.1"
postcss-value-parser "^4.2.0"
-available-typed-arrays@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
- integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
balanced-match@^1.0.0:
version "1.0.2"
@@ -1251,9 +1493,9 @@ balanced-match@^1.0.0:
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base-x@^3.0.8:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
- integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75"
+ integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==
dependencies:
safe-buffer "^5.0.1"
@@ -1274,7 +1516,7 @@ bl@^4.0.3:
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
brace-expansion@^1.1.7:
version "1.1.11"
@@ -1284,32 +1526,27 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+braces@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
- fill-range "^7.0.1"
+ fill-range "^7.1.1"
-browserslist@^4.0.0, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.23.3, browserslist@^4.6.6:
- version "4.23.3"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
- integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
+browserslist@^4.0.0, browserslist@^4.23.3, browserslist@^4.6.6:
+ version "4.24.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2"
+ integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==
dependencies:
- caniuse-lite "^1.0.30001646"
- electron-to-chromium "^1.5.4"
- node-releases "^2.0.18"
- update-browserslist-db "^1.1.0"
+ caniuse-lite "^1.0.30001688"
+ electron-to-chromium "^1.5.73"
+ node-releases "^2.0.19"
+ update-browserslist-db "^1.1.1"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
- integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
-
-buffer-from@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
- integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+ integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
buffer@^5.2.1, buffer@^5.5.0:
version "5.7.1"
@@ -1319,13 +1556,31 @@ buffer@^5.2.1, buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-call-bind@^1.0.0, call-bind@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
+ integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
+ integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-define-property "^1.0.0"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.2"
+
+call-bound@^1.0.2, call-bound@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681"
+ integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==
dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
+ call-bind-apply-helpers "^1.0.1"
+ get-intrinsic "^1.2.6"
call-me-maybe@^1.0.1:
version "1.0.2"
@@ -1347,17 +1602,12 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677:
- version "1.0.30001677"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f"
- integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==
-
-caniuse-lite@^1.0.30001690:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001690:
version "1.0.30001690"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8"
integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==
-chalk@^2.0.0:
+chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1366,7 +1616,7 @@ chalk@^2.0.0:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
-chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0, chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -1379,10 +1629,10 @@ chownr@^1.1.1:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
-chrome-trace-event@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
- integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b"
+ integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
ci-info@^2.0.0:
version "2.0.0"
@@ -1390,12 +1640,12 @@ ci-info@^2.0.0:
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
cli-color@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879"
- integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.4.tgz#d658080290968816b322248b7306fad2346fb2c8"
+ integrity sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==
dependencies:
d "^1.0.1"
- es5-ext "^0.10.61"
+ es5-ext "^0.10.64"
es6-iterator "^2.0.3"
memoizee "^0.4.15"
timers-ext "^0.1.7"
@@ -1403,7 +1653,7 @@ cli-color@^2.0.2:
clone@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
- integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+ integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
codemirror@^6.0.1:
version "6.0.1"
@@ -1435,7 +1685,7 @@ color-convert@^2.0.1:
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
@@ -1458,22 +1708,22 @@ color@^4.2.3:
color-convert "^2.0.1"
color-string "^1.9.0"
-colord@^2.9.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e"
- integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==
+colord@^2.9.3:
+ version "2.9.3"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
+ integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-commander@^2.20.0:
- version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
- integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^12.1.0:
+ version "12.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
+ integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
commander@^6.1.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-commander@^7.0.0, commander@^7.2.0:
+commander@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
@@ -1481,28 +1731,27 @@ commander@^7.0.0, commander@^7.2.0:
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-cosmiconfig@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
- integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+cosmiconfig@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
+ integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.10.0"
+ env-paths "^2.2.1"
+ import-fresh "^3.3.0"
+ js-yaml "^4.1.0"
+ parse-json "^5.2.0"
crelt@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
- integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
+ integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
cross-spawn@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ version "6.0.6"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57"
+ integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
@@ -1510,123 +1759,123 @@ cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-css-color-names@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-1.0.1.tgz#6ff7ee81a823ad46e020fa2fd6ab40a887e2ba67"
- integrity sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==
+css-declaration-sorter@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024"
+ integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==
-css-declaration-sorter@^6.0.3:
- version "6.1.3"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2"
- integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==
+css-select@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
+ integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
dependencies:
- timsort "^0.3.0"
+ boolbase "^1.0.0"
+ css-what "^6.1.0"
+ domhandler "^5.0.2"
+ domutils "^3.0.1"
+ nth-check "^2.0.1"
-css-select@^4.1.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067"
- integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==
+css-tree@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
+ integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
dependencies:
- boolbase "^1.0.0"
- css-what "^5.0.0"
- domhandler "^4.2.0"
- domutils "^2.6.0"
- nth-check "^2.0.0"
+ mdn-data "2.0.30"
+ source-map-js "^1.0.1"
-css-tree@^1.1.2, css-tree@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
- integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+css-tree@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032"
+ integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==
dependencies:
- mdn-data "2.0.14"
- source-map "^0.6.1"
+ mdn-data "2.0.28"
+ source-map-js "^1.0.1"
-css-what@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
- integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
+css-what@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-cssnano-preset-default@^5.1.6:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.6.tgz#1bdb83be6a6b1fee6dc5e9ec2e61286bcadcc7a6"
- integrity sha512-X2nDeNGBXc0486oHjT2vSj+TdeyVsxRvJUxaOH50hOM6vSDLkKd0+59YXpSZRInJ4sNtBOykS4KsPfhdrU/35w==
- dependencies:
- css-declaration-sorter "^6.0.3"
- cssnano-utils "^2.0.1"
- postcss-calc "^8.0.0"
- postcss-colormin "^5.2.1"
- postcss-convert-values "^5.0.2"
- postcss-discard-comments "^5.0.1"
- postcss-discard-duplicates "^5.0.1"
- postcss-discard-empty "^5.0.1"
- postcss-discard-overridden "^5.0.1"
- postcss-merge-longhand "^5.0.3"
- postcss-merge-rules "^5.0.2"
- postcss-minify-font-values "^5.0.1"
- postcss-minify-gradients "^5.0.3"
- postcss-minify-params "^5.0.1"
- postcss-minify-selectors "^5.1.0"
- postcss-normalize-charset "^5.0.1"
- postcss-normalize-display-values "^5.0.1"
- postcss-normalize-positions "^5.0.1"
- postcss-normalize-repeat-style "^5.0.1"
- postcss-normalize-string "^5.0.1"
- postcss-normalize-timing-functions "^5.0.1"
- postcss-normalize-unicode "^5.0.1"
- postcss-normalize-url "^5.0.2"
- postcss-normalize-whitespace "^5.0.1"
- postcss-ordered-values "^5.0.2"
- postcss-reduce-initial "^5.0.1"
- postcss-reduce-transforms "^5.0.1"
- postcss-svgo "^5.0.3"
- postcss-unique-selectors "^5.0.1"
-
-cssnano-utils@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2"
- integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==
+cssnano-preset-default@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.6.tgz#0220fa7507478369aa2a226bac03e1204cd024c1"
+ integrity sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==
+ dependencies:
+ browserslist "^4.23.3"
+ css-declaration-sorter "^7.2.0"
+ cssnano-utils "^5.0.0"
+ postcss-calc "^10.0.2"
+ postcss-colormin "^7.0.2"
+ postcss-convert-values "^7.0.4"
+ postcss-discard-comments "^7.0.3"
+ postcss-discard-duplicates "^7.0.1"
+ postcss-discard-empty "^7.0.0"
+ postcss-discard-overridden "^7.0.0"
+ postcss-merge-longhand "^7.0.4"
+ postcss-merge-rules "^7.0.4"
+ postcss-minify-font-values "^7.0.0"
+ postcss-minify-gradients "^7.0.0"
+ postcss-minify-params "^7.0.2"
+ postcss-minify-selectors "^7.0.4"
+ postcss-normalize-charset "^7.0.0"
+ postcss-normalize-display-values "^7.0.0"
+ postcss-normalize-positions "^7.0.0"
+ postcss-normalize-repeat-style "^7.0.0"
+ postcss-normalize-string "^7.0.0"
+ postcss-normalize-timing-functions "^7.0.0"
+ postcss-normalize-unicode "^7.0.2"
+ postcss-normalize-url "^7.0.0"
+ postcss-normalize-whitespace "^7.0.0"
+ postcss-ordered-values "^7.0.1"
+ postcss-reduce-initial "^7.0.2"
+ postcss-reduce-transforms "^7.0.0"
+ postcss-svgo "^7.0.1"
+ postcss-unique-selectors "^7.0.3"
+
+cssnano-utils@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-5.0.0.tgz#b53a0343dd5d21012911882db6ae7d2eae0e3687"
+ integrity sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==
-cssnano@^5.0.8:
- version "5.0.10"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.10.tgz#92207eb7c9c6dc08d318050726f9fad0adf7220b"
- integrity sha512-YfNhVJJ04imffOpbPbXP2zjIoByf0m8E2c/s/HnvSvjXgzXMfgopVjAEGvxYOjkOpWuRQDg/OZFjO7WW94Ri8w==
+cssnano@^7.0.6:
+ version "7.0.6"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.0.6.tgz#63d54fd42bc017f6aaed69e47d9aaef85b7850ec"
+ integrity sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==
dependencies:
- cssnano-preset-default "^5.1.6"
- is-resolvable "^1.1.0"
- lilconfig "^2.0.3"
- yaml "^1.10.2"
+ cssnano-preset-default "^7.0.6"
+ lilconfig "^3.1.2"
-csso@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
- integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+csso@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6"
+ integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==
dependencies:
- css-tree "^1.1.2"
+ css-tree "~2.2.0"
-d@1, d@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
- integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+d@1, d@^1.0.1, d@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de"
+ integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==
dependencies:
- es5-ext "^0.10.50"
- type "^1.0.1"
+ es5-ext "^0.10.64"
+ type "^2.7.2"
data-uri-to-buffer@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b"
- integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
+ integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-debug@4, debug@^4.1.0, debug@^4.1.1:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+debug@4, debug@^4.1.1, debug@^4.3.1:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
dependencies:
- ms "2.1.2"
+ ms "^2.1.3"
debug@4.3.2:
version "4.3.2"
@@ -1635,23 +1884,21 @@ debug@4.3.2:
dependencies:
ms "2.1.2"
-decompress-response@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
- integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
- mimic-response "^3.1.0"
-
-deep-extend@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
-define-properties@^1.1.3, define-properties@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
- integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+define-properties@^1.1.3, define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
dependencies:
+ define-data-property "^1.0.1"
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
@@ -1663,41 +1910,50 @@ dequal@^2.0.0:
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+ integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
-detect-libc@^2.0.0, detect-libc@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
- integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
+detect-libc@^2.0.1, detect-libc@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
+ integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
devtools-protocol@0.0.937139:
version "0.0.937139"
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.937139.tgz#bdee3751fdfdb81cb701fd3afa94b1065dafafcf"
integrity sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==
-diff-sequences@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5"
- integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==
+diff-sequences@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
+ integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
diff@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
- integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
+ integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
dom-serializer@^1.0.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
- integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.2.0"
entities "^2.0.0"
-domelementtype@^2.0.1, domelementtype@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
- integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+dom-serializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ entities "^4.2.0"
+
+domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
domhandler@^3.3.0:
version "3.3.0"
@@ -1713,7 +1969,14 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2:
dependencies:
domelementtype "^2.2.0"
-domutils@^2.4.2, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.8.0:
+domhandler@^5.0.2, domhandler@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
+ dependencies:
+ domelementtype "^2.3.0"
+
+domutils@^2.4.2, domutils@^2.5.2, domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
@@ -1722,20 +1985,40 @@ domutils@^2.4.2, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.8.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
-dotenv-expand@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
- integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+domutils@^3.0.1, domutils@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
+ integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
+ dependencies:
+ dom-serializer "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
-dotenv@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
- integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==
+dotenv-expand@^11.0.6:
+ version "11.0.7"
+ resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08"
+ integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==
+ dependencies:
+ dotenv "^16.4.5"
+
+dotenv@^16.4.5:
+ version "16.4.7"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
+ integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
-electron-to-chromium@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz#cd477c830dd6fca41fbd5465c1ff6ce08ac22343"
- integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==
+dunder-proto@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
+ integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ es-errors "^1.3.0"
+ gopd "^1.2.0"
+
+electron-to-chromium@^1.5.73:
+ version "1.5.75"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.75.tgz#bba96eabf0e8ca36324679caa38b982800acc87d"
+ integrity sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
@@ -1754,11 +2037,21 @@ entities@^3.0.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+entities@^4.2.0, entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
entities@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
+env-paths@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -1766,51 +2059,31 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.19.0, es-abstract@^1.19.5, es-abstract@^1.20.0:
- version "1.20.2"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3"
- integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==
- dependencies:
- call-bind "^1.0.2"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.1.2"
- get-symbol-description "^1.0.0"
- has "^1.0.3"
- has-property-descriptors "^1.0.0"
- has-symbols "^1.0.3"
- internal-slot "^1.0.3"
- is-callable "^1.2.4"
- is-negative-zero "^2.0.2"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- is-string "^1.0.7"
- is-weakref "^1.0.2"
- object-inspect "^1.12.2"
- object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.4.3"
- string.prototype.trimend "^1.0.5"
- string.prototype.trimstart "^1.0.5"
- unbox-primitive "^1.0.2"
+es-define-property@^1.0.0, es-define-property@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+ integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
+ es-errors "^1.3.0"
-es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
- version "0.10.62"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
- integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
+es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2:
+ version "0.10.64"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714"
+ integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==
dependencies:
es6-iterator "^2.0.3"
es6-symbol "^3.1.3"
+ esniff "^2.0.1"
next-tick "^1.1.0"
es6-iterator@^2.0.3:
@@ -1822,18 +2095,13 @@ es6-iterator@^2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-object-assign@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
- integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==
-
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
- integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c"
+ integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==
dependencies:
- d "^1.0.1"
- ext "^1.1.2"
+ d "^1.0.2"
+ ext "^1.7.0"
es6-weak-map@^2.0.3:
version "2.0.3"
@@ -1846,42 +2114,53 @@ es6-weak-map@^2.0.3:
es6-symbol "^3.1.1"
esbuild@^0.19.8:
- version "0.19.8"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.8.tgz#ad05b72281d84483fa6b5345bd246c27a207b8f1"
- integrity sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==
+ version "0.19.12"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04"
+ integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==
optionalDependencies:
- "@esbuild/android-arm" "0.19.8"
- "@esbuild/android-arm64" "0.19.8"
- "@esbuild/android-x64" "0.19.8"
- "@esbuild/darwin-arm64" "0.19.8"
- "@esbuild/darwin-x64" "0.19.8"
- "@esbuild/freebsd-arm64" "0.19.8"
- "@esbuild/freebsd-x64" "0.19.8"
- "@esbuild/linux-arm" "0.19.8"
- "@esbuild/linux-arm64" "0.19.8"
- "@esbuild/linux-ia32" "0.19.8"
- "@esbuild/linux-loong64" "0.19.8"
- "@esbuild/linux-mips64el" "0.19.8"
- "@esbuild/linux-ppc64" "0.19.8"
- "@esbuild/linux-riscv64" "0.19.8"
- "@esbuild/linux-s390x" "0.19.8"
- "@esbuild/linux-x64" "0.19.8"
- "@esbuild/netbsd-x64" "0.19.8"
- "@esbuild/openbsd-x64" "0.19.8"
- "@esbuild/sunos-x64" "0.19.8"
- "@esbuild/win32-arm64" "0.19.8"
- "@esbuild/win32-ia32" "0.19.8"
- "@esbuild/win32-x64" "0.19.8"
-
-escalade@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
- integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+ "@esbuild/aix-ppc64" "0.19.12"
+ "@esbuild/android-arm" "0.19.12"
+ "@esbuild/android-arm64" "0.19.12"
+ "@esbuild/android-x64" "0.19.12"
+ "@esbuild/darwin-arm64" "0.19.12"
+ "@esbuild/darwin-x64" "0.19.12"
+ "@esbuild/freebsd-arm64" "0.19.12"
+ "@esbuild/freebsd-x64" "0.19.12"
+ "@esbuild/linux-arm" "0.19.12"
+ "@esbuild/linux-arm64" "0.19.12"
+ "@esbuild/linux-ia32" "0.19.12"
+ "@esbuild/linux-loong64" "0.19.12"
+ "@esbuild/linux-mips64el" "0.19.12"
+ "@esbuild/linux-ppc64" "0.19.12"
+ "@esbuild/linux-riscv64" "0.19.12"
+ "@esbuild/linux-s390x" "0.19.12"
+ "@esbuild/linux-x64" "0.19.12"
+ "@esbuild/netbsd-x64" "0.19.12"
+ "@esbuild/openbsd-x64" "0.19.12"
+ "@esbuild/sunos-x64" "0.19.12"
+ "@esbuild/win32-arm64" "0.19.12"
+ "@esbuild/win32-ia32" "0.19.12"
+ "@esbuild/win32-x64" "0.19.12"
+
+escalade@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+esniff@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308"
+ integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==
+ dependencies:
+ d "^1.0.1"
+ es5-ext "^0.10.62"
+ event-emitter "^0.3.5"
+ type "^2.7.2"
esprima@~4.0.0:
version "4.0.1"
@@ -1896,12 +2175,7 @@ event-emitter@^0.3.5:
d "1"
es5-ext "~0.10.14"
-expand-template@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
- integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-
-ext@^1.1.2:
+ext@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
@@ -1927,21 +2201,22 @@ fclone@^1.0.11:
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
- integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+ integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
dependencies:
pend "~1.2.0"
-fetch-blob@^3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.3.tgz#a7dca4855e39d3e3c5a1da62d4ee335c37d26012"
- integrity sha512-ax1Y5I9w+9+JiM+wdHkhBoxew+zG4AJ2SvAD1v1szpddUIiPERVGBxrMcB2ZqW0Y3PP8bOWYv2zqQq1Jp2kqUQ==
+fetch-blob@^3.1.2, fetch-blob@^3.1.4:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
+ integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
dependencies:
+ node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
@@ -1998,48 +2273,41 @@ fs-constants@^1.0.0:
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-fs-extra@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
- integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+fs-extra@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-function.prototype.name@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
- integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.0"
- functions-have-names "^1.2.2"
-
-functions-have-names@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
- integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2:
+function-bind@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
- integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.3"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+get-intrinsic@^1.2.4, get-intrinsic@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5"
+ integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==
+ dependencies:
+ call-bind-apply-helpers "^1.0.1"
+ dunder-proto "^1.0.0"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ function-bind "^1.1.2"
+ gopd "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+ math-intrinsics "^1.0.0"
get-port@^4.2.0:
version "4.2.0"
@@ -2058,19 +2326,6 @@ get-stream@^5.1.0:
dependencies:
pump "^3.0.0"
-get-symbol-description@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
- integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.1"
-
-github-from-package@0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
- integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
-
glob-promise@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877"
@@ -2096,64 +2351,64 @@ globals@^11.1.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.2.0:
- version "13.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
- integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
+ version "13.24.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
- version "4.2.10"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+gopd@^1.0.1, gopd@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+ integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
-has-bigints@^1.0.1, has-bigints@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
- integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+graceful-fs@^4.1.11, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-property-descriptors@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
- integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
- get-intrinsic "^1.1.1"
+ es-define-property "^1.0.0"
-has-symbols@^1.0.2, has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+has-symbols@^1.0.3, has-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+ integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
-has-tostringtag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
- integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
dependencies:
- has-symbols "^1.0.2"
+ has-symbols "^1.0.3"
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
dependencies:
- function-bind "^1.1.1"
+ function-bind "^1.1.2"
htmlnano@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.2.tgz#3e3170941e2446a86211196d740272ebca78f878"
- integrity sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.1.tgz#9ba84e145cd8b7cd4c783d9ab8ff46a80e79b59b"
+ integrity sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==
dependencies:
- cosmiconfig "^7.0.1"
+ cosmiconfig "^9.0.0"
posthtml "^0.16.5"
timsort "^0.3.0"
@@ -2178,15 +2433,25 @@ htmlparser2@^6.0.0:
entities "^2.0.0"
htmlparser2@^7.1.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.1.2.tgz#587923d38f03bc89e03076e00cba2c7473f37f7c"
- integrity sha512-d6cqsbJba2nRdg8WW2okyD4ceonFHn9jLFxhwlNcLhQWcFPdxXeJulgOLjLKtAK9T6ahd+GQNZwG9fjmGW7lyg==
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
+ integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.2.2"
domutils "^2.8.0"
entities "^3.0.1"
+htmlparser2@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23"
+ integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+ domutils "^3.1.0"
+ entities "^4.5.0"
+
https-proxy-agent@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
@@ -2200,7 +2465,7 @@ ieee754@^1.1.13:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-import-fresh@^3.2.1:
+import-fresh@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -2211,7 +2476,7 @@ import-fresh@^3.2.1:
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
@@ -2221,67 +2486,33 @@ inherits@2, inherits@^2.0.3, inherits@^2.0.4:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@~1.3.0:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-internal-slot@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
- integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
- dependencies:
- get-intrinsic "^1.1.0"
- has "^1.0.3"
- side-channel "^1.0.4"
-
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-is-absolute-url@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
- integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
-
is-arguments@^1.0.4:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
- integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b"
+ integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==
dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
+ call-bound "^1.0.2"
+ has-tostringtag "^1.0.2"
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
-is-bigint@^1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
- integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
- dependencies:
- has-bigints "^1.0.1"
-
-is-boolean-object@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
- integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
- integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+is-callable@^1.1.3:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
is-ci@^2.0.0:
version "2.0.0"
@@ -2290,19 +2521,12 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
-is-core-module@^2.9.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
- integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+is-core-module@^2.16.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.0.tgz#6c01ffdd5e33c49c1d2abfa93334a85cb56bd81c"
+ integrity sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==
dependencies:
- has "^1.0.3"
-
-is-date-object@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
- integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
- dependencies:
- has-tostringtag "^1.0.0"
+ hasown "^2.0.2"
is-docker@^2.0.0:
version "2.2.1"
@@ -2312,7 +2536,7 @@ is-docker@^2.0.0:
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-generator-function@^1.0.7:
version "1.0.10"
@@ -2331,9 +2555,9 @@ is-glob@^4.0.3:
is-json@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff"
- integrity sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8=
+ integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==
-is-nan@^1.2.1:
+is-nan@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
@@ -2341,18 +2565,6 @@ is-nan@^1.2.1:
call-bind "^1.0.0"
define-properties "^1.1.3"
-is-negative-zero@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
- integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
-
-is-number-object@^1.0.4:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
- integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
- dependencies:
- has-tostringtag "^1.0.0"
-
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
@@ -2363,57 +2575,12 @@ is-promise@^2.2.2:
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
-is-regex@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
- integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-resolvable@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
- integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-
-is-shared-array-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
- integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
- dependencies:
- call-bind "^1.0.2"
-
-is-string@^1.0.5, is-string@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
- integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-symbol@^1.0.2, is-symbol@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
- integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
- dependencies:
- has-symbols "^1.0.2"
-
-is-typed-array@^1.1.3, is-typed-array@^1.1.9:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67"
- integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-abstract "^1.20.0"
- for-each "^0.3.3"
- has-tostringtag "^1.0.0"
-
-is-weakref@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
- integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+is-typed-array@^1.1.3:
+ version "1.1.15"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
+ integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
dependencies:
- call-bind "^1.0.2"
+ which-typed-array "^1.1.16"
is-wsl@^2.1.1:
version "2.2.0"
@@ -2428,19 +2595,19 @@ isexe@^2.0.0:
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
jest-diff@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f"
- integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
+ integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
dependencies:
chalk "^4.0.0"
- diff-sequences "^27.4.0"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.2"
+ diff-sequences "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
-jest-get-type@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5"
- integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==
+jest-get-type@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
+ integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
js-tokens@^4.0.0:
version "4.0.0"
@@ -2454,10 +2621,10 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
@@ -2465,11 +2632,11 @@ json-parse-even-better-errors@^2.3.0:
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-schema-to-typescript@^11.0.2:
- version "11.0.2"
- resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-11.0.2.tgz#80348391abb4ffb75daf312380c2f01c552ffba8"
- integrity sha512-XRyeXBJeo/IH4eTP5D1ptX78vCvH86nMDt2k3AxO28C3uYWEDmy4mgPyMpb8bLJ/pJMElOGuQbnKR5Y6NSh3QQ==
+ version "11.0.5"
+ resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-11.0.5.tgz#04020422b7970e1c3b2ee8b601548e8751e1cd03"
+ integrity sha512-ZNlvngzlPzjYYECbR+uJ9aUWo25Gw/VuwUytvcuKiwc6NaiZhMyf7qBsxZE2eixmj8AoQEQJhSRG7btln0sUDw==
dependencies:
- "@bcherny/json-schema-ref-parser" "9.0.9"
+ "@bcherny/json-schema-ref-parser" "10.0.5-fork"
"@types/json-schema" "^7.0.11"
"@types/lodash" "^4.14.182"
"@types/prettier" "^2.6.1"
@@ -2485,14 +2652,16 @@ json-schema-to-typescript@^11.0.2:
prettier "^2.6.2"
json5@^2.2.0, json5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
- integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
@@ -2508,7 +2677,7 @@ kleur@^4.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
-lightningcss@^1.16.1:
+lightningcss@^1.22.1:
version "0.0.0"
uid ""
@@ -2516,15 +2685,15 @@ lightningcss@^1.16.1:
version "0.0.0"
uid ""
-lilconfig@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd"
- integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==
+lilconfig@^3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
+ integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
lines-and-columns@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
- integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
linkify-it@^3.0.1:
version "3.0.3"
@@ -2533,23 +2702,23 @@ linkify-it@^3.0.1:
dependencies:
uc.micro "^1.0.1"
-lmdb@2.5.2:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1"
- integrity sha512-V5V5Xa2Hp9i2XsbDALkBTeHXnBXh/lEmk9p22zdr7jtuOIY9TGhjK6vAvTpOOx9IKU4hJkRWZxn/HsvR1ELLtA==
+lmdb@2.8.5:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837"
+ integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==
dependencies:
- msgpackr "^1.5.4"
- node-addon-api "^4.3.0"
- node-gyp-build-optional-packages "5.0.3"
- ordered-binary "^1.2.4"
+ msgpackr "^1.9.5"
+ node-addon-api "^6.1.0"
+ node-gyp-build-optional-packages "5.1.1"
+ ordered-binary "^1.4.1"
weak-lru-cache "^1.2.2"
optionalDependencies:
- "@lmdb/lmdb-darwin-arm64" "2.5.2"
- "@lmdb/lmdb-darwin-x64" "2.5.2"
- "@lmdb/lmdb-linux-arm" "2.5.2"
- "@lmdb/lmdb-linux-arm64" "2.5.2"
- "@lmdb/lmdb-linux-x64" "2.5.2"
- "@lmdb/lmdb-win32-x64" "2.5.2"
+ "@lmdb/lmdb-darwin-arm64" "2.8.5"
+ "@lmdb/lmdb-darwin-x64" "2.8.5"
+ "@lmdb/lmdb-linux-arm" "2.8.5"
+ "@lmdb/lmdb-linux-arm64" "2.8.5"
+ "@lmdb/lmdb-linux-x64" "2.8.5"
+ "@lmdb/lmdb-win32-x64" "2.8.5"
locate-path@^5.0.0:
version "5.0.0"
@@ -2561,25 +2730,18 @@ locate-path@^5.0.0:
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
lodash@^4.17.20, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
lru-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
@@ -2588,9 +2750,9 @@ lru-queue@^0.1.0:
es5-ext "~0.10.2"
markdown-it-anchor@^8.6.6:
- version "8.6.6"
- resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz#4a12e358c9c2167ee28cb7a5f10e29d6f1ffd7ca"
- integrity sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA==
+ version "8.6.7"
+ resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634"
+ integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==
markdown-it-prism@^2.3.0:
version "2.3.0"
@@ -2615,10 +2777,20 @@ markdown-it@^12.0.2:
mdurl "^1.0.1"
uc.micro "^1.0.5"
-mdn-data@2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
- integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+math-intrinsics@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
+ integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
+
+mdn-data@2.0.28:
+ version "2.0.28"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba"
+ integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==
+
+mdn-data@2.0.30:
+ version "2.0.30"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
+ integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
mdurl@^1.0.1:
version "1.0.1"
@@ -2626,12 +2798,12 @@ mdurl@^1.0.1:
integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
memoizee@^0.4.15:
- version "0.4.15"
- resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
- integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==
+ version "0.4.17"
+ resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.17.tgz#942a5f8acee281fa6fb9c620bddc57e3b7382949"
+ integrity sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==
dependencies:
- d "^1.0.1"
- es5-ext "^0.10.53"
+ d "^1.0.2"
+ es5-ext "^0.10.64"
es6-weak-map "^2.0.3"
event-emitter "^0.3.5"
is-promise "^2.2.2"
@@ -2639,19 +2811,14 @@ memoizee@^0.4.15:
next-tick "^1.1.0"
timers-ext "^0.1.7"
-micromatch@^4.0.2:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
- integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+micromatch@^4.0.2, micromatch@^4.0.5:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
- braces "^3.0.2"
+ braces "^3.0.3"
picomatch "^2.3.1"
-mimic-response@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
- integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-
min-indent@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
@@ -2664,12 +2831,12 @@ minimatch@^3.1.1:
dependencies:
brace-expansion "^1.1.7"
-minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
- integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
+minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
+mkdirp-classic@^0.5.2:
version "0.5.3"
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
@@ -2689,26 +2856,31 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-msgpackr-extract@^2.0.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-2.1.2.tgz#56272030f3e163e1b51964ef8b1cd5e7240c03ed"
- integrity sha512-cmrmERQFb19NX2JABOGtrKdHMyI6RUyceaPBQ2iRz9GnDkjBWFjNJC0jyyoOfZl2U/LZE3tQCCQc4dlRyA8mcA==
+ms@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+msgpackr-extract@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012"
+ integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==
dependencies:
- node-gyp-build-optional-packages "5.0.3"
+ node-gyp-build-optional-packages "5.2.2"
optionalDependencies:
- "@msgpackr-extract/msgpackr-extract-darwin-arm64" "2.1.2"
- "@msgpackr-extract/msgpackr-extract-darwin-x64" "2.1.2"
- "@msgpackr-extract/msgpackr-extract-linux-arm" "2.1.2"
- "@msgpackr-extract/msgpackr-extract-linux-arm64" "2.1.2"
- "@msgpackr-extract/msgpackr-extract-linux-x64" "2.1.2"
- "@msgpackr-extract/msgpackr-extract-win32-x64" "2.1.2"
-
-msgpackr@^1.5.4:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.6.2.tgz#176cd9f6b4437dad87a839b37f23c2dfee408d9a"
- integrity sha512-bqSQ0DYJbXbrJcrZFmMygUZmqQiDfI2ewFVWcrZY12w5XHWtPuW4WppDT/e63Uu311ajwkRRXSoF0uILroBeTA==
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3"
+ "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3"
+ "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3"
+ "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3"
+ "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3"
+ "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3"
+
+msgpackr@^1.9.5, msgpackr@^1.9.9:
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d"
+ integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==
optionalDependencies:
- msgpackr-extract "^2.0.2"
+ msgpackr-extract "^3.0.2"
mz@^2.7.0:
version "2.7.0"
@@ -2719,22 +2891,17 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
-nanoid@^3.1.30:
- version "3.1.30"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
- integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
-
-napi-build-utils@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
- integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+nanoid@^3.3.7:
+ version "3.3.8"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
+ integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
napi-wasm@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.0.1.tgz#b186b9f9f1a54c321c4a1ea852a31a9691792a24"
- integrity sha512-70Ks5fMTw5/5iZJg8dtyivwPP9tgyeLRHGa2j4GlFOjz4lWbbTWrDAvSeJlQg+o++cWpX2bSPGI1Hu4W2kbOoA==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.3.tgz#7bb95c88e6561f84880bb67195437b1cfbe99224"
+ integrity sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg==
-next-tick@1, next-tick@^1.1.0:
+next-tick@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
@@ -2744,27 +2911,20 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-node-abi@^3.3.0:
- version "3.24.0"
- resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.24.0.tgz#b9d03393a49f2c7e147d0c99f180e680c27c1599"
- integrity sha512-YPG3Co0luSu6GwOBsmIdGW6Wx0NyNDLg/hriIyDllVsNwnI6UeqaWShxC3lbH4LtEQUgoLP3XR1ndXiDAWvmRw==
- dependencies:
- semver "^7.3.5"
-
-node-addon-api@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
- integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
+node-addon-api@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
+ integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
-node-addon-api@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
- integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
+node-addon-api@^7.0.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
+ integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
-node-addon-api@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501"
- integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
+node-domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
+ integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
node-fetch@2.6.5:
version "2.6.5"
@@ -2774,43 +2934,42 @@ node-fetch@2.6.5:
whatwg-url "^5.0.0"
node-fetch@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.1.0.tgz#714f4922dc270239487654eaeeab86b8206cb52e"
- integrity sha512-QU0WbIfMUjd5+MUzQOYhenAazakV7Irh1SGkWCsRzBwvm4fAhzEUaHMJ6QLP7gWT6WO9/oH2zhKMMGMuIrDyKw==
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
+ integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
dependencies:
data-uri-to-buffer "^4.0.0"
- fetch-blob "^3.1.2"
+ fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
-node-gyp-build-optional-packages@5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17"
- integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==
+node-gyp-build-optional-packages@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c"
+ integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==
+ dependencies:
+ detect-libc "^2.0.1"
-node-gyp-build@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
- integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
+node-gyp-build-optional-packages@5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4"
+ integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==
+ dependencies:
+ detect-libc "^2.0.1"
-node-releases@^2.0.18:
- version "2.0.18"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
- integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
+node-releases@^2.0.19:
+ version "2.0.19"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
normalize-range@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-
-normalize-url@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
- integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-nth-check@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
- integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
dependencies:
boolbase "^1.0.0"
@@ -2824,18 +2983,13 @@ object-assign@^4.0.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-object-inspect@^1.12.2, object-inspect@^1.9.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
- integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
-
-object-is@^1.0.1:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
- integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
object-keys@^1.1.1:
version "1.1.1"
@@ -2843,19 +2997,21 @@ object-keys@^1.1.1:
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object.assign@^4.1.4:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
- integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- has-symbols "^1.0.3"
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d"
+ integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
+ dependencies:
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+ has-symbols "^1.1.0"
object-keys "^1.1.1"
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
@@ -2867,10 +3023,10 @@ open@^7.4.2:
is-docker "^2.0.0"
is-wsl "^2.1.1"
-ordered-binary@^1.2.4:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.3.0.tgz#a116d64c923278216e335602d279750b2ebd746e"
- integrity sha512-knIeYepTI6BDAzGxqFEDGtI/iGqs57H32CInAIxEvAHG46vk1Di0CEpyc1A7iY39B1mfik3g3KLYwOTNnnMHLA==
+ordered-binary@^1.4.1:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.3.tgz#8bee2aa7a82c3439caeb1e80c272fd4cf51170fb"
+ integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==
os-tmpdir@~1.0.2:
version "1.0.2"
@@ -2897,24 +3053,25 @@ p-try@^2.0.0:
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
parcel@^2.8.2:
- version "2.8.2"
- resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.8.2.tgz#6539c0a435b14e5829d09254b0394dcfbc0b0ba5"
- integrity sha512-XMVf3Ip9Iokv0FC3ulN/B0cb5O21qaw0RhUPz7zULQlY794ZpFP9mNtN7HvCVEgjl5/q2sYMcTA8l+5QJ2zZ/Q==
- dependencies:
- "@parcel/config-default" "2.8.2"
- "@parcel/core" "2.8.2"
- "@parcel/diagnostic" "2.8.2"
- "@parcel/events" "2.8.2"
- "@parcel/fs" "2.8.2"
- "@parcel/logger" "2.8.2"
- "@parcel/package-manager" "2.8.2"
- "@parcel/reporter-cli" "2.8.2"
- "@parcel/reporter-dev-server" "2.8.2"
- "@parcel/utils" "2.8.2"
- chalk "^4.1.0"
- commander "^7.0.0"
+ version "2.13.3"
+ resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.13.3.tgz#d82c31ecf50169215e31a716b0f8ee5a20bdd865"
+ integrity sha512-8GrC8C7J8mwRpAlk7EJ7lwdFTbCN+dcXH2gy5AsEs9pLfzo9wvxOTx6W0fzSlvCOvZOita+8GdfYlGfEt0tRgA==
+ dependencies:
+ "@parcel/config-default" "2.13.3"
+ "@parcel/core" "2.13.3"
+ "@parcel/diagnostic" "2.13.3"
+ "@parcel/events" "2.13.3"
+ "@parcel/feature-flags" "2.13.3"
+ "@parcel/fs" "2.13.3"
+ "@parcel/logger" "2.13.3"
+ "@parcel/package-manager" "2.13.3"
+ "@parcel/reporter-cli" "2.13.3"
+ "@parcel/reporter-dev-server" "2.13.3"
+ "@parcel/reporter-tracer" "2.13.3"
+ "@parcel/utils" "2.13.3"
+ chalk "^4.1.2"
+ commander "^12.1.0"
get-port "^4.2.0"
- v8-compile-cache "^2.0.0"
parent-module@^1.0.0:
version "1.0.1"
@@ -2923,7 +3080,7 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-json@^5.0.0:
+parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
@@ -2934,15 +3091,15 @@ parse-json@^5.0.0:
lines-and-columns "^1.1.6"
patch-package@^6.5.0:
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.0.tgz#feb058db56f0005da59cfa316488321de585e88a"
- integrity sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621"
+ integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
chalk "^4.1.2"
cross-spawn "^6.0.5"
find-yarn-workspace-root "^2.0.0"
- fs-extra "^7.0.1"
+ fs-extra "^9.0.0"
is-ci "^2.0.0"
klaw-sync "^6.0.0"
minimist "^1.2.6"
@@ -2966,7 +3123,7 @@ path-exists@^4.0.0:
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^2.0.1:
version "2.0.1"
@@ -2978,20 +3135,15 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
- integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+ integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
-picocolors@^1.0.0, picocolors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
- integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
+picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.3.1:
version "2.3.1"
@@ -3005,242 +3157,239 @@ pkg-dir@4.2.0:
dependencies:
find-up "^4.0.0"
-postcss-calc@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a"
- integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
+postcss-calc@^10.0.2:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.0.2.tgz#15f01635a27b9d38913a98c4ef2877f5b715b439"
+ integrity sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==
dependencies:
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.0.2"
+ postcss-selector-parser "^6.1.2"
+ postcss-value-parser "^4.2.0"
-postcss-colormin@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d"
- integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==
+postcss-colormin@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.2.tgz#6f3c53c13158168669f45adc3926f35cb240ef8e"
+ integrity sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==
dependencies:
- browserslist "^4.16.6"
+ browserslist "^4.23.3"
caniuse-api "^3.0.0"
- colord "^2.9.1"
- postcss-value-parser "^4.1.0"
+ colord "^2.9.3"
+ postcss-value-parser "^4.2.0"
-postcss-convert-values@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059"
- integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==
+postcss-convert-values@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-7.0.4.tgz#fc13ecedded6365f3c794b502dbcf77d298da12c"
+ integrity sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==
dependencies:
- postcss-value-parser "^4.1.0"
+ browserslist "^4.23.3"
+ postcss-value-parser "^4.2.0"
-postcss-discard-comments@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe"
- integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==
+postcss-discard-comments@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz#9c414e8ee99d3514ad06a3465ccc20ec1dbce780"
+ integrity sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==
+ dependencies:
+ postcss-selector-parser "^6.1.2"
-postcss-discard-duplicates@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d"
- integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==
+postcss-discard-duplicates@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz#f87f2fe47d8f01afb1e98361c1db3ce1e8afd1a3"
+ integrity sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==
-postcss-discard-empty@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8"
- integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==
+postcss-discard-empty@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-7.0.0.tgz#218829d1ef0a5d5142dd62f0aa60e00e599d2033"
+ integrity sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==
-postcss-discard-overridden@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6"
- integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==
+postcss-discard-overridden@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-7.0.0.tgz#b123ea51e3d4e1d0a254cf71eaff1201926d319c"
+ integrity sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==
-postcss-merge-longhand@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.3.tgz#42194a5ffbaa5513edbf606ef79c44958564658b"
- integrity sha512-kmB+1TjMTj/bPw6MCDUiqSA5e/x4fvLffiAdthra3a0m2/IjTrWsTmD3FdSskzUjEwkj5ZHBDEbv5dOcqD7CMQ==
+postcss-merge-longhand@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-7.0.4.tgz#a52d0662b4b29420f3b64a8d5b0ac5133d8db776"
+ integrity sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==
dependencies:
- css-color-names "^1.0.1"
- postcss-value-parser "^4.1.0"
- stylehacks "^5.0.1"
+ postcss-value-parser "^4.2.0"
+ stylehacks "^7.0.4"
-postcss-merge-rules@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz#d6e4d65018badbdb7dcc789c4f39b941305d410a"
- integrity sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==
+postcss-merge-rules@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-7.0.4.tgz#648cc864d3121e6ec72c2a4f08df1cc801e60ce8"
+ integrity sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==
dependencies:
- browserslist "^4.16.6"
+ browserslist "^4.23.3"
caniuse-api "^3.0.0"
- cssnano-utils "^2.0.1"
- postcss-selector-parser "^6.0.5"
- vendors "^1.0.3"
+ cssnano-utils "^5.0.0"
+ postcss-selector-parser "^6.1.2"
-postcss-minify-font-values@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf"
- integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==
+postcss-minify-font-values@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-7.0.0.tgz#d16a75a2548e000779566b3568fc874ee5d0aa17"
+ integrity sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-minify-gradients@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e"
- integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==
+postcss-minify-gradients@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.0.tgz#f6d84456e6d49164a55d0e45bb1b1809c6cf0959"
+ integrity sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==
dependencies:
- colord "^2.9.1"
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ colord "^2.9.3"
+ cssnano-utils "^5.0.0"
+ postcss-value-parser "^4.2.0"
-postcss-minify-params@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz#371153ba164b9d8562842fdcd929c98abd9e5b6c"
- integrity sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==
+postcss-minify-params@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz#264a76e25f202d8b5ca5290569c0e8c3ac599dfe"
+ integrity sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==
dependencies:
- alphanum-sort "^1.0.2"
- browserslist "^4.16.0"
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
- uniqs "^2.0.0"
+ browserslist "^4.23.3"
+ cssnano-utils "^5.0.0"
+ postcss-value-parser "^4.2.0"
-postcss-minify-selectors@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54"
- integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==
+postcss-minify-selectors@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-7.0.4.tgz#2b69c99ec48a1c223fce4840609d9c53340a11f5"
+ integrity sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==
dependencies:
- alphanum-sort "^1.0.2"
- postcss-selector-parser "^6.0.5"
+ cssesc "^3.0.0"
+ postcss-selector-parser "^6.1.2"
-postcss-normalize-charset@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0"
- integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==
+postcss-normalize-charset@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-7.0.0.tgz#92244ae73c31bf8f8885d5f16ff69e857ac6c001"
+ integrity sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==
-postcss-normalize-display-values@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd"
- integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==
+postcss-normalize-display-values@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.0.tgz#01fb50e5e97ef8935363629bea5a6d3b3aac1342"
+ integrity sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-positions@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5"
- integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==
+postcss-normalize-positions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-7.0.0.tgz#4eebd7c9d3dde40c97b8047cad38124fc844c463"
+ integrity sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-repeat-style@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5"
- integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==
+postcss-normalize-repeat-style@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.0.tgz#0cb784655d5714d29bd3bda6dee2fb628aa7227b"
+ integrity sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-string@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0"
- integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==
+postcss-normalize-string@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-7.0.0.tgz#a119d3e63a9614570d8413d572fb9fc8c6a64e8c"
+ integrity sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-timing-functions@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c"
- integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==
+postcss-normalize-timing-functions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.0.tgz#99d0ee8c4b23b7f4355fafb91385833b9b07108b"
+ integrity sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-unicode@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37"
- integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==
+postcss-normalize-unicode@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz#095f8d36ea29adfdf494069c1de101112992a713"
+ integrity sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==
dependencies:
- browserslist "^4.16.0"
- postcss-value-parser "^4.1.0"
+ browserslist "^4.23.3"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-url@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz#ddcdfb7cede1270740cf3e4dfc6008bd96abc763"
- integrity sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==
+postcss-normalize-url@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-7.0.0.tgz#c88cb7cf8952d3ff631e4eba924e7b060ca802f6"
+ integrity sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==
dependencies:
- is-absolute-url "^3.0.3"
- normalize-url "^6.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-whitespace@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a"
- integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==
+postcss-normalize-whitespace@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.0.tgz#46b025f0bea72139ddee63015619b0c21cebd845"
+ integrity sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-ordered-values@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044"
- integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==
+postcss-ordered-values@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-7.0.1.tgz#8b4b5b8070ca7756bd49f07d5edf274b8f6782e0"
+ integrity sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ cssnano-utils "^5.0.0"
+ postcss-value-parser "^4.2.0"
-postcss-reduce-initial@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946"
- integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==
+postcss-reduce-initial@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz#3dc085347a5943e18547d4b0aa5bd4ff5a93b2c5"
+ integrity sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==
dependencies:
- browserslist "^4.16.0"
+ browserslist "^4.23.3"
caniuse-api "^3.0.0"
-postcss-reduce-transforms@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640"
- integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==
+postcss-reduce-transforms@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.0.tgz#0386080a14e5faad9f8eda33375b79fe7c4f9677"
+ integrity sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5:
- version "6.0.6"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea"
- integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==
+postcss-selector-parser@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
+ integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-svgo@^5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30"
- integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==
+postcss-svgo@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-7.0.1.tgz#2b63571d8e9568384df334bac9917baff4d23f58"
+ integrity sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==
dependencies:
- postcss-value-parser "^4.1.0"
- svgo "^2.7.0"
+ postcss-value-parser "^4.2.0"
+ svgo "^3.3.2"
-postcss-unique-selectors@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz#3be5c1d7363352eff838bd62b0b07a0abad43bfc"
- integrity sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==
+postcss-unique-selectors@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-7.0.3.tgz#483fc11215b23d517d5d9bbe5833d9915619ca33"
+ integrity sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==
dependencies:
- alphanum-sort "^1.0.2"
- postcss-selector-parser "^6.0.5"
- uniqs "^2.0.0"
+ postcss-selector-parser "^6.1.2"
-postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.3.11:
- version "8.3.11"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858"
- integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==
+ version "8.4.49"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19"
+ integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==
dependencies:
- nanoid "^3.1.30"
- picocolors "^1.0.0"
- source-map-js "^0.6.2"
+ nanoid "^3.3.7"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
posthtml-expressions@^1.7.1:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/posthtml-expressions/-/posthtml-expressions-1.11.0.tgz#bac30b0fb1c87b25be39cf1a085332e38d7327e6"
- integrity sha512-Un7J/UugURkoxCuFJ+1UwzmXe19hPrfUBOYgrjf2ipkCyghSh8L3ldwKttgjs8GI+4aPPUFThAted0J2tpORnA==
+ version "1.11.4"
+ resolved "https://registry.yarnpkg.com/posthtml-expressions/-/posthtml-expressions-1.11.4.tgz#eb86666de10940268a74fe0f3fb62d3f7607b5de"
+ integrity sha512-tJI6KhKLcePRO0/i4d01MNXfcaBa2jIu4MuVLixvGwCRzxdY2D7LLm17ijNyQNQu3xOhCffBLtUMju0K64smmQ==
dependencies:
fclone "^1.0.11"
+ posthtml "^0.16.5"
posthtml-match-helper "^1.0.1"
posthtml-parser "^0.10.0"
posthtml-render "^3.0.0"
@@ -3266,14 +3415,14 @@ posthtml-markdownit@^1.3.1:
posthtml-render "^1.4.0"
posthtml-match-helper@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/posthtml-match-helper/-/posthtml-match-helper-1.0.3.tgz#9308f0bdc66398735f7117441feca64f131956d5"
- integrity sha512-aeRAPvok2Fs6uzSm85665jdAk5UOd8US2QCkWtGU6yLPlKSwzWTSgZZuABc3UeNy3K1lVk/HV9bRkWJYN05Ymw==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/posthtml-match-helper/-/posthtml-match-helper-1.0.4.tgz#b8f384179732cb5d5e060b9dd1945a2352eb6a44"
+ integrity sha512-Tj9orTIBxHdnraCxoEGjoizsFsTGvukzwcuhOjYQGmDG6gTlaRbMrGgi1J+FwKTN8hsCQENHYY0Deqs9a89BVg==
-posthtml-parser@^0.10.0, posthtml-parser@^0.10.1:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.1.tgz#63c41931a9339cc2c32aba14f06286d98f107abf"
- integrity sha512-i7w2QEHqiGtsvNNPty0Mt/+ERch7wkgnFh3+JnBI2VgDbGlBqKW9eDVd3ENUhE1ujGFe3e3E/odf7eKhvLUyDg==
+posthtml-parser@^0.10.0:
+ version "0.10.2"
+ resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573"
+ integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==
dependencies:
htmlparser2 "^7.1.1"
@@ -3284,6 +3433,13 @@ posthtml-parser@^0.11.0:
dependencies:
htmlparser2 "^7.1.1"
+posthtml-parser@^0.12.1:
+ version "0.12.1"
+ resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.12.1.tgz#f29cc2eec3e6dd0bb99ac169f49963515adbff21"
+ integrity sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==
+ dependencies:
+ htmlparser2 "^9.0.0"
+
posthtml-parser@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.6.0.tgz#52488cdb4fa591c3102de73197c471859ee0be63"
@@ -3333,35 +3489,16 @@ posthtml@^0.16.4, posthtml@^0.16.5, posthtml@^0.16.6:
posthtml-parser "^0.11.0"
posthtml-render "^3.0.0"
-prebuild-install@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
- integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
- dependencies:
- detect-libc "^2.0.0"
- expand-template "^2.0.3"
- github-from-package "0.0.0"
- minimist "^1.2.3"
- mkdirp-classic "^0.5.3"
- napi-build-utils "^1.0.1"
- node-abi "^3.3.0"
- pump "^3.0.0"
- rc "^1.2.7"
- simple-get "^4.0.0"
- tar-fs "^2.0.0"
- tunnel-agent "^0.6.0"
-
prettier@^2.5.1, prettier@^2.6.2:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc"
- integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
+ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-pretty-format@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8"
- integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==
+pretty-format@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
dependencies:
- "@jest/types" "^27.4.2"
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
react-is "^17.0.1"
@@ -3387,9 +3524,9 @@ proxy-from-env@1.1.0:
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
+ integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
@@ -3412,16 +3549,6 @@ puppeteer@^12.0.1:
unbzip2-stream "1.4.3"
ws "8.2.3"
-rc@^1.2.7:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
- dependencies:
- deep-extend "^0.6.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
react-error-overlay@6.0.9:
version "6.0.9"
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
@@ -3432,15 +3559,15 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-refresh@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
- integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
+"react-refresh@>=0.9 <=0.14":
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
+ integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
readable-stream@^3.1.1, readable-stream@^3.4.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
@@ -3464,19 +3591,10 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
-regenerator-runtime@^0.13.7:
- version "0.13.9"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
- integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
-
-regexp.prototype.flags@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
- integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- functions-have-names "^1.2.2"
+regenerator-runtime@^0.14.1:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
resolve-from@^4.0.0:
version "4.0.0"
@@ -3484,11 +3602,11 @@ resolve-from@^4.0.0:
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve@^1.1.6:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
- integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ version "1.22.10"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
+ integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
dependencies:
- is-core-module "^2.9.0"
+ is-core-module "^2.16.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -3518,31 +3636,56 @@ safe-buffer@^5.0.1, safe-buffer@~5.2.0:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+semver@^5.5.0, semver@^5.6.0:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+semver@^7.5.2, semver@^7.6.3:
+ version "7.6.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-semver@^7.3.5, semver@^7.3.8:
- version "7.3.8"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
- integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+set-function-length@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
dependencies:
- lru-cache "^6.0.0"
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
-sharp@^0.31.1:
- version "0.31.3"
- resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.31.3.tgz#60227edc5c2be90e7378a210466c99aefcf32688"
- integrity sha512-XcR4+FCLBFKw1bdB+GEhnUNXNXvnt0tDo4WsBsraKymuo/IAuPuCBVAL2wIkUw2r/dwFW5Q5+g66Kwl2dgDFVg==
+sharp@^0.33.5:
+ version "0.33.5"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e"
+ integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==
dependencies:
color "^4.2.3"
- detect-libc "^2.0.1"
- node-addon-api "^5.0.0"
- prebuild-install "^7.1.1"
- semver "^7.3.8"
- simple-get "^4.0.1"
- tar-fs "^2.1.1"
- tunnel-agent "^0.6.0"
+ detect-libc "^2.0.3"
+ semver "^7.6.3"
+ optionalDependencies:
+ "@img/sharp-darwin-arm64" "0.33.5"
+ "@img/sharp-darwin-x64" "0.33.5"
+ "@img/sharp-libvips-darwin-arm64" "1.0.4"
+ "@img/sharp-libvips-darwin-x64" "1.0.4"
+ "@img/sharp-libvips-linux-arm" "1.0.5"
+ "@img/sharp-libvips-linux-arm64" "1.0.4"
+ "@img/sharp-libvips-linux-s390x" "1.0.4"
+ "@img/sharp-libvips-linux-x64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-arm64" "1.0.4"
+ "@img/sharp-libvips-linuxmusl-x64" "1.0.4"
+ "@img/sharp-linux-arm" "0.33.5"
+ "@img/sharp-linux-arm64" "0.33.5"
+ "@img/sharp-linux-s390x" "0.33.5"
+ "@img/sharp-linux-x64" "0.33.5"
+ "@img/sharp-linuxmusl-arm64" "0.33.5"
+ "@img/sharp-linuxmusl-x64" "0.33.5"
+ "@img/sharp-wasm32" "0.33.5"
+ "@img/sharp-win32-ia32" "0.33.5"
+ "@img/sharp-win32-x64" "0.33.5"
shebang-command@^1.2.0:
version "1.2.0"
@@ -3565,29 +3708,6 @@ shelljs@^0.8.4:
interpret "^1.0.0"
rechoir "^0.6.2"
-side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
-simple-concat@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
- integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-
-simple-get@^4.0.0, simple-get@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
- integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
- dependencies:
- decompress-response "^6.0.0"
- once "^1.3.1"
- simple-concat "^1.0.0"
-
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -3600,46 +3720,20 @@ slash@^2.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
-source-map-js@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
- integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
-
-source-map-support@~0.5.20:
- version "0.5.20"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
- integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
+source-map-js@^1.0.1, source-map-js@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
-string.prototype.trimend@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
- integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.19.5"
-
-string.prototype.trimstart@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
- integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.19.5"
+srcset@4:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4"
+ integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
string_decoder@^1.1.1:
version "1.3.0"
@@ -3648,23 +3742,18 @@ string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
-strip-json-comments@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-
-style-mod@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
- integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
+style-mod@^4.0.0, style-mod@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67"
+ integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==
-stylehacks@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb"
- integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==
+stylehacks@^7.0.4:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-7.0.4.tgz#9c21f7374f4bccc0082412b859b3c89d77d3277c"
+ integrity sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==
dependencies:
- browserslist "^4.16.0"
- postcss-selector-parser "^6.0.4"
+ browserslist "^4.23.3"
+ postcss-selector-parser "^6.1.2"
supports-color@^5.3.0:
version "5.5.0"
@@ -3685,20 +3774,20 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-svgo@^2.4.0, svgo@^2.7.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
- integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+svgo@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8"
+ integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==
dependencies:
"@trysound/sax" "0.2.0"
commander "^7.2.0"
- css-select "^4.1.3"
- css-tree "^1.1.3"
- csso "^4.2.0"
+ css-select "^5.1.0"
+ css-tree "^2.3.1"
+ css-what "^6.1.0"
+ csso "^5.0.5"
picocolors "^1.0.0"
- stable "^0.1.8"
-tar-fs@2.1.1, tar-fs@^2.0.0, tar-fs@^2.1.1:
+tar-fs@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
@@ -3724,16 +3813,6 @@ term-size@^2.2.1:
resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
-terser@^5.2.0:
- version "5.16.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880"
- integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==
- dependencies:
- "@jridgewell/source-map" "^0.3.2"
- acorn "^8.5.0"
- commander "^2.20.0"
- source-map-support "~0.5.20"
-
thenify-all@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
@@ -3751,20 +3830,20 @@ thenify-all@^1.0.0:
through@^2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
timers-ext@^0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
- integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c"
+ integrity sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==
dependencies:
- es5-ext "~0.10.46"
- next-tick "1"
+ es5-ext "^0.10.64"
+ next-tick "^1.1.0"
timsort@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+ integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
tmp@^0.0.33:
version "0.0.33"
@@ -3773,11 +3852,6 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -3788,34 +3862,22 @@ to-regex-range@^5.0.1:
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-tslib@^2.0.1, tslib@^2.4.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
- integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
- dependencies:
- safe-buffer "^5.0.1"
+tslib@^2.0.1, tslib@^2.4.0, tslib@^2.8.0:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-type@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
- integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
-
type@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
- integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486"
+ integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
typescript-compiler@^1.4.1-2:
version "1.4.1-2"
@@ -3832,16 +3894,6 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-unbox-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
- integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
- dependencies:
- call-bind "^1.0.2"
- has-bigints "^1.0.2"
- has-symbols "^1.0.3"
- which-boxed-primitive "^1.0.2"
-
unbzip2-stream@1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
@@ -3850,30 +3902,30 @@ unbzip2-stream@1.4.3:
buffer "^5.2.1"
through "^2.3.8"
-uniqs@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
- integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+undici-types@~6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
+ integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-update-browserslist-db@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
- integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
+update-browserslist-db@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+ integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
dependencies:
- escalade "^3.1.2"
- picocolors "^1.0.1"
+ escalade "^3.2.0"
+ picocolors "^1.1.0"
util-deprecate@^1.0.1, util-deprecate@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-util@^0.12.0, util@^0.12.4:
+util@^0.12.4, util@^0.12.5:
version "0.12.5"
resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
@@ -3885,9 +3937,9 @@ util@^0.12.0, util@^0.12.4:
which-typed-array "^1.1.2"
utility-types@^3.10.0:
- version "3.10.0"
- resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
- integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c"
+ integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==
uvu@^0.5.6:
version "0.5.6"
@@ -3899,20 +3951,10 @@ uvu@^0.5.6:
kleur "^4.0.3"
sade "^1.7.3"
-v8-compile-cache@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
- integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
-
-vendors@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
- integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
-
w3c-keyname@^2.2.4:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f"
- integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
+ integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
weak-lru-cache@^1.2.2:
version "1.2.2"
@@ -3920,45 +3962,34 @@ weak-lru-cache@^1.2.2:
integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==
web-streams-polyfill@^3.0.3:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965"
- integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
+ integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-which-boxed-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
- integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
- dependencies:
- is-bigint "^1.0.1"
- is-boolean-object "^1.1.0"
- is-number-object "^1.0.4"
- is-string "^1.0.5"
- is-symbol "^1.0.3"
-
-which-typed-array@^1.1.2:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f"
- integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==
+which-typed-array@^1.1.16, which-typed-array@^1.1.2:
+ version "1.1.18"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad"
+ integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==
dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-abstract "^1.20.0"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.8"
+ call-bound "^1.0.3"
for-each "^0.3.3"
- has-tostringtag "^1.0.0"
- is-typed-array "^1.1.9"
+ gopd "^1.2.0"
+ has-tostringtag "^1.0.2"
which@^1.2.9:
version "1.3.1"
@@ -3970,24 +4001,14 @@ which@^1.2.9:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
ws@8.2.3:
version "8.2.3"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
-xxhash-wasm@^0.4.2:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79"
- integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^1.10.0, yaml@^1.10.2:
+yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
@@ -3995,7 +4016,7 @@ yaml@^1.10.0, yaml@^1.10.2:
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+ integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
From 97891d85f1ea3a9912a0996daa532e72d0c86046 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 13:01:34 -0500
Subject: [PATCH 047/137] Fix parsing list-style shorthand
list-style-type should be parsed last since it allows custom keywords. Fixes #867
---
src/lib.rs | 35 +++++++++++++++++++++++++++++++----
src/properties/list.rs | 10 +++++-----
2 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 92c877a2..9a689f05 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -16380,7 +16380,7 @@ mod tests {
);
minify_test(
".foo { list-style: \"★\" url(ellipse.png) outside; }",
- ".foo{list-style:\"★\" url(ellipse.png)}",
+ ".foo{list-style:url(ellipse.png) \"★\"}",
);
test(
@@ -16421,7 +16421,7 @@ mod tests {
"#,
indoc! {r#"
.foo {
- list-style: \"★\" url("ellipse.png");
+ list-style: url("ellipse.png") \"★\";
list-style-image: var(--img);
}
"#},
@@ -16447,8 +16447,8 @@ mod tests {
".foo { list-style: \"★\" linear-gradient(lch(56.208% 136.76 46.312), lch(51% 135.366 301.364)) }",
indoc! { r#"
.foo {
- list-style: "★" linear-gradient(#ff0f0e, #7773ff);
- list-style: "★" linear-gradient(lch(56.208% 136.76 46.312), lch(51% 135.366 301.364));
+ list-style: linear-gradient(#ff0f0e, #7773ff) "★";
+ list-style: linear-gradient(lch(56.208% 136.76 46.312), lch(51% 135.366 301.364)) "★";
}
"#},
Browsers {
@@ -16475,6 +16475,33 @@ mod tests {
..Browsers::default()
},
);
+
+ test(
+ r#"
+ .foo {
+ list-style: inside;
+ list-style-type: disc;
+ }
+ "#,
+ indoc! {r#"
+ .foo {
+ list-style: inside;
+ }
+ "#},
+ );
+ test(
+ r#"
+ .foo {
+ list-style: inside;
+ list-style-type: decimal;
+ }
+ "#,
+ indoc! {r#"
+ .foo {
+ list-style: inside decimal;
+ }
+ "#},
+ );
}
#[test]
diff --git a/src/properties/list.rs b/src/properties/list.rs
index 54a0c052..235ca1a9 100644
--- a/src/properties/list.rs
+++ b/src/properties/list.rs
@@ -332,13 +332,13 @@ enum_property! {
shorthand_property! {
/// A value for the [list-style](https://www.w3.org/TR/2020/WD-css-lists-3-20201117/#list-style-property) shorthand property.
pub struct ListStyle<'i> {
- /// The list style type.
- #[cfg_attr(feature = "serde", serde(borrow))]
- list_style_type: ListStyleType(ListStyleType<'i>),
- /// The list marker image.
- image: ListStyleImage(Image<'i>),
/// The position of the list marker.
position: ListStylePosition(ListStylePosition),
+ /// The list marker image.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ image: ListStyleImage(Image<'i>),
+ /// The list style type.
+ list_style_type: ListStyleType(ListStyleType<'i>),
}
}
From f9ecde2eb72ae6914ef82cdbba8ba6e1c51f225b Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 13:11:38 -0500
Subject: [PATCH 048/137] Fix TS
---
package.json | 5 ++--
yarn.lock | 74 ++++++++++++++++++++++++++++++++++++++++------------
2 files changed, 61 insertions(+), 18 deletions(-)
diff --git a/package.json b/package.json
index 392ee7f2..a2897fce 100644
--- a/package.json
+++ b/package.json
@@ -42,8 +42,8 @@
"detect-libc": "^1.0.3"
},
"devDependencies": {
- "@babel/parser": "^7.21.4",
- "@babel/traverse": "^7.21.4",
+ "@babel/parser": "7.21.4",
+ "@babel/traverse": "7.21.4",
"@codemirror/lang-css": "^6.0.1",
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
@@ -74,6 +74,7 @@
"puppeteer": "^12.0.1",
"recast": "^0.22.0",
"sharp": "^0.33.5",
+ "typescript": "^5.7.2",
"util": "^0.12.4",
"uvu": "^0.5.6"
},
diff --git a/yarn.lock b/yarn.lock
index fd2256a3..638e0a6b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,7 +2,7 @@
# yarn lockfile v1
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.25.9":
version "7.26.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
@@ -11,7 +11,7 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/generator@^7.26.3":
+"@babel/generator@^7.21.4":
version "7.26.3"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019"
integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==
@@ -22,6 +22,35 @@
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
+"@babel/helper-environment-visitor@^7.18.9":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
+ integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==
+ dependencies:
+ "@babel/types" "^7.24.7"
+
+"@babel/helper-function-name@^7.21.0":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2"
+ integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==
+ dependencies:
+ "@babel/template" "^7.24.7"
+ "@babel/types" "^7.24.7"
+
+"@babel/helper-hoist-variables@^7.18.6":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee"
+ integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==
+ dependencies:
+ "@babel/types" "^7.24.7"
+
+"@babel/helper-split-export-declaration@^7.18.6":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856"
+ integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==
+ dependencies:
+ "@babel/types" "^7.24.7"
+
"@babel/helper-string-parser@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
@@ -42,6 +71,11 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
+"@babel/parser@7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
+ integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
+
"@babel/parser@^7.21.4", "@babel/parser@^7.25.9", "@babel/parser@^7.26.3":
version "7.26.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234"
@@ -49,7 +83,7 @@
dependencies:
"@babel/types" "^7.26.3"
-"@babel/template@^7.25.9":
+"@babel/template@^7.24.7":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
@@ -58,20 +92,23 @@
"@babel/parser" "^7.25.9"
"@babel/types" "^7.25.9"
-"@babel/traverse@^7.21.4":
- version "7.26.4"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd"
- integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==
- dependencies:
- "@babel/code-frame" "^7.26.2"
- "@babel/generator" "^7.26.3"
- "@babel/parser" "^7.26.3"
- "@babel/template" "^7.25.9"
- "@babel/types" "^7.26.3"
- debug "^4.3.1"
+"@babel/traverse@7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36"
+ integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==
+ dependencies:
+ "@babel/code-frame" "^7.21.4"
+ "@babel/generator" "^7.21.4"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.21.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.21.4"
+ "@babel/types" "^7.21.4"
+ debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.25.9", "@babel/types@^7.26.3":
+"@babel/types@^7.21.4", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.3":
version "7.26.3"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
@@ -1870,7 +1907,7 @@ data-uri-to-buffer@^4.0.0:
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-debug@4, debug@^4.1.1, debug@^4.3.1:
+debug@4, debug@^4.1.0, debug@^4.1.1:
version "4.4.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
@@ -3884,6 +3921,11 @@ typescript-compiler@^1.4.1-2:
resolved "https://registry.yarnpkg.com/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz#ba4f7db22d91534a1929d90009dce161eb72fd3f"
integrity sha512-EMopKmoAEJqA4XXRFGOb7eSBhmQMbBahW6P1Koayeatp0b4AW2q/bBqYWkpG7QVQc9HGQUiS4trx2ZHcnAaZUg==
+typescript@^5.7.2:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6"
+ integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==
+
typescript@~4.4.4:
version "4.4.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
From 7f290350ed0cc53b1267d6810417f0611135eeee Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sat, 21 Dec 2024 15:53:34 -0500
Subject: [PATCH 049/137] Compile media query range syntax with boolean logic
instead of fractional pixels
Fixes #228, fixes #864
---
src/lib.rs | 102 ++++++++++++++++++++++++++++++----
src/media_query.rs | 133 ++++++++++++++++++++++++++++++---------------
2 files changed, 179 insertions(+), 56 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 9a689f05..fbba61af 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -8402,7 +8402,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-color: 3) {
+ @media not (max-color: 2) {
.foo {
color: #7fff00;
}
@@ -8423,7 +8423,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (max-color: 1) {
+ @media not (min-color: 2) {
.foo {
color: #7fff00;
}
@@ -8444,7 +8444,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-width: 240.001px) {
+ @media not (max-width: 240px) {
.foo {
color: #7fff00;
}
@@ -8507,7 +8507,66 @@ mod tests {
}
"#,
indoc! { r#"
- @media (max-width: 239.999px) {
+ @media not (min-width: 240px) {
+ .foo {
+ color: #7fff00;
+ }
+ }
+ "#},
+ Browsers {
+ firefox: Some(60 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ @media not (width < 240px) {
+ .foo {
+ color: chartreuse;
+ }
+ }
+ "#,
+ indoc! { r#"
+ @media (min-width: 240px) {
+ .foo {
+ color: #7fff00;
+ }
+ }
+ "#},
+ Browsers {
+ firefox: Some(60 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ test(
+ r#"
+ @media not (width < 240px) {
+ .foo {
+ color: chartreuse;
+ }
+ }
+ "#,
+ indoc! { r#"
+ @media (width >= 240px) {
+ .foo {
+ color: #7fff00;
+ }
+ }
+ "#},
+ );
+
+ prefix_test(
+ r#"
+ @media (width < 240px) and (hover) {
+ .foo {
+ color: chartreuse;
+ }
+ }
+ "#,
+ indoc! { r#"
+ @media (not (min-width: 240px)) and (hover) {
.foo {
color: #7fff00;
}
@@ -8612,7 +8671,28 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-width: 100.001px) and (max-width: 199.999px) {
+ @media (not (max-width: 100px)) and (not (min-width: 200px)) {
+ .foo {
+ color: #7fff00;
+ }
+ }
+ "#},
+ Browsers {
+ firefox: Some(85 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ @media not (100px < width < 200px) {
+ .foo {
+ color: chartreuse;
+ }
+ }
+ "#,
+ indoc! { r#"
+ @media not ((not (max-width: 100px)) and (not (min-width: 200px))) {
.foo {
color: #7fff00;
}
@@ -8663,7 +8743,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-width: calc(1.001px + 1rem)) {
+ @media not (max-width: calc(1px + 1rem)) {
.foo {
color: #ff0;
}
@@ -8681,7 +8761,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-width: calc(max(10px, 1rem) + .001px)) {
+ @media not (max-width: max(10px, 1rem)) {
.foo {
color: #ff0;
}
@@ -8699,7 +8779,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (min-width: .001px) {
+ @media not (max-width: 0) {
.foo {
color: #ff0;
}
@@ -8753,7 +8833,7 @@ mod tests {
}
"#,
indoc! { r#"
- @media (-webkit-min-device-pixel-ratio: 2.001), (min-resolution: 2.001dppx) {
+ @media not (-webkit-max-device-pixel-ratio: 2), not (max-resolution: 2dppx) {
.foo {
color: #ff0;
}
@@ -22509,7 +22589,7 @@ mod tests {
grid-auto-flow: column;
}
- @media (min-width: 1024px) {
+ @media not (max-width: 1024px) {
.foo {
max-inline-size: 1024px;
}
@@ -26336,7 +26416,7 @@ mod tests {
}
"#,
indoc! {r#"
- @media screen and ((prefers-color-scheme: dark) or (not (width >= 300px))) {
+ @media screen and ((prefers-color-scheme: dark) or ((width < 300px))) {
.foo {
order: 6;
}
diff --git a/src/media_query.rs b/src/media_query.rs
index 63c0b236..d90d3b0b 100644
--- a/src/media_query.rs
+++ b/src/media_query.rs
@@ -765,6 +765,16 @@ where
Ok(())
}
+impl<'i> MediaCondition<'i> {
+ fn negate(&self) -> Option<'i>> {
+ match self {
+ MediaCondition::Not(not) => Some((**not).clone()),
+ MediaCondition::Feature(f) => f.negate().map(MediaCondition::Feature),
+ _ => None,
+ }
+ }
+}
+
impl<'i> ToCss for MediaCondition<'i> {
fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
where
@@ -773,8 +783,12 @@ impl<'i> ToCss for MediaCondition<'i> {
match *self {
MediaCondition::Feature(ref f) => f.to_css(dest),
MediaCondition::Not(ref c) => {
- dest.write_str("not ")?;
- to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
+ if let Some(negated) = c.negate() {
+ negated.to_css(dest)
+ } else {
+ dest.write_str("not ")?;
+ to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
+ }
}
MediaCondition::Operation {
ref conditions,
@@ -841,6 +855,16 @@ impl MediaFeatureComparison {
MediaFeatureComparison::Equal => MediaFeatureComparison::Equal,
}
}
+
+ fn negate(&self) -> MediaFeatureComparison {
+ match self {
+ MediaFeatureComparison::GreaterThan => MediaFeatureComparison::LessThanEqual,
+ MediaFeatureComparison::GreaterThanEqual => MediaFeatureComparison::LessThan,
+ MediaFeatureComparison::LessThan => MediaFeatureComparison::GreaterThanEqual,
+ MediaFeatureComparison::LessThanEqual => MediaFeatureComparison::GreaterThan,
+ MediaFeatureComparison::Equal => MediaFeatureComparison::Equal,
+ }
+ }
}
/// A generic media feature or container feature.
@@ -902,7 +926,7 @@ pub type MediaFeature<'i> = QueryFeature<'i, MediaFeatureId>;
impl<'i, FeatureId> Parse<'i> for QueryFeature<'i, FeatureId>
where
- FeatureId: for<'x> Parse<'x> + std::fmt::Debug + PartialEq + ValueType,
+ FeatureId: for<'x> Parse<'x> + std::fmt::Debug + PartialEq + ValueType + Clone,
{
fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
match input.try_parse(Self::parse_name_first) {
@@ -920,7 +944,7 @@ where
impl<'i, FeatureId> QueryFeature<'i, FeatureId>
where
- FeatureId: for<'x> Parse<'x> + std::fmt::Debug + PartialEq + ValueType,
+ FeatureId: for<'x> Parse<'x> + std::fmt::Debug + PartialEq + ValueType + Clone,
{
fn parse_name_first<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
let (name, legacy_op) = MediaFeatureName::parse(input)?;
@@ -1017,9 +1041,31 @@ where
}
pub(crate) fn needs_parens(&self, parent_operator: Option, targets: &Targets) -> bool {
- parent_operator != Some(Operator::And)
- && matches!(self, QueryFeature::Interval { .. })
- && should_compile!(targets, MediaIntervalSyntax)
+ if !should_compile!(targets, MediaIntervalSyntax) {
+ return false;
+ }
+
+ match self {
+ QueryFeature::Interval { .. } => parent_operator != Some(Operator::And),
+ QueryFeature::Range { operator, .. } => {
+ matches!(
+ operator,
+ MediaFeatureComparison::GreaterThan | MediaFeatureComparison::LessThan
+ )
+ }
+ _ => false,
+ }
+ }
+
+ fn negate(&self) -> Option<'i, FeatureId>> {
+ match self {
+ QueryFeature::Range { name, operator, value } => Some(QueryFeature::Range {
+ name: (*name).clone(),
+ operator: operator.negate(),
+ value: value.clone(),
+ }),
+ _ => None,
+ }
}
}
@@ -1028,13 +1074,13 @@ impl<'i, FeatureId: FeatureToCss> ToCss for QueryFeature<'i, FeatureId> {
where
W: std::fmt::Write,
{
- dest.write_char('(')?;
-
match self {
QueryFeature::Boolean { name } => {
+ dest.write_char('(')?;
name.to_css(dest)?;
}
QueryFeature::Plain { name, value } => {
+ dest.write_char('(')?;
name.to_css(dest)?;
dest.delim(':', false)?;
value.to_css(dest)?;
@@ -1042,9 +1088,10 @@ impl<'i, FeatureId: FeatureToCss> ToCss for QueryFeature<'i, FeatureId> {
QueryFeature::Range { name, operator, value } => {
// If range syntax is unsupported, use min/max prefix if possible.
if should_compile!(dest.targets, MediaRangeSyntax) {
- return write_min_max(operator, name, value, dest);
+ return write_min_max(operator, name, value, dest, false);
}
+ dest.write_char('(')?;
name.to_css(dest)?;
operator.to_css(dest)?;
value.to_css(dest)?;
@@ -1057,11 +1104,12 @@ impl<'i, FeatureId: FeatureToCss> ToCss for QueryFeature<'i, FeatureId> {
end_operator,
} => {
if should_compile!(dest.targets, MediaIntervalSyntax) {
- write_min_max(&start_operator.opposite(), name, start, dest)?;
- dest.write_str(" and (")?;
- return write_min_max(end_operator, name, end, dest);
+ write_min_max(&start_operator.opposite(), name, start, dest, true)?;
+ dest.write_str(" and ")?;
+ return write_min_max(end_operator, name, end, dest, true);
}
+ dest.write_char('(')?;
start.to_css(dest)?;
start_operator.to_css(dest)?;
name.to_css(dest)?;
@@ -1378,16 +1426,32 @@ fn write_min_max(
name: &MediaFeatureName,
value: &MediaFeatureValue,
dest: &mut Printer,
+ is_range: bool,
) -> Result<(), PrinterError>
where
W: std::fmt::Write,
{
let prefix = match operator {
- MediaFeatureComparison::GreaterThan | MediaFeatureComparison::GreaterThanEqual => Some("min-"),
- MediaFeatureComparison::LessThan | MediaFeatureComparison::LessThanEqual => Some("max-"),
+ MediaFeatureComparison::GreaterThan => {
+ if is_range {
+ dest.write_char('(')?;
+ }
+ dest.write_str("not ")?;
+ Some("max-")
+ }
+ MediaFeatureComparison::GreaterThanEqual => Some("min-"),
+ MediaFeatureComparison::LessThan => {
+ if is_range {
+ dest.write_char('(')?;
+ }
+ dest.write_str("not ")?;
+ Some("min-")
+ }
+ MediaFeatureComparison::LessThanEqual => Some("max-"),
MediaFeatureComparison::Equal => None,
};
+ dest.write_char('(')?;
if let Some(prefix) = prefix {
name.to_css_with_prefix(prefix, dest)?;
} else {
@@ -1395,17 +1459,15 @@ where
}
dest.delim(':', false)?;
+ value.to_css(dest)?;
- let adjusted = match operator {
- MediaFeatureComparison::GreaterThan => Some(value.clone() + 0.001),
- MediaFeatureComparison::LessThan => Some(value.clone() + -0.001),
- _ => None,
- };
-
- if let Some(value) = adjusted {
- value.to_css(dest)?;
- } else {
- value.to_css(dest)?;
+ if is_range
+ && matches!(
+ operator,
+ MediaFeatureComparison::GreaterThan | MediaFeatureComparison::LessThan
+ )
+ {
+ dest.write_char(')')?;
}
dest.write_char(')')?;
@@ -1560,25 +1622,6 @@ impl<'i> ToCss for MediaFeatureValue<'i> {
}
}
-impl<'i> std::ops::Add for MediaFeatureValue<'i> {
- type Output = Self;
-
- fn add(self, other: f32) -> Self {
- match self {
- MediaFeatureValue::Length(len) => MediaFeatureValue::Length(len + Length::px(other)),
- MediaFeatureValue::Number(num) => MediaFeatureValue::Number(num + other),
- MediaFeatureValue::Integer(num) => {
- MediaFeatureValue::Integer(num + if other.is_sign_positive() { 1 } else { -1 })
- }
- MediaFeatureValue::Boolean(v) => MediaFeatureValue::Boolean(v),
- MediaFeatureValue::Resolution(res) => MediaFeatureValue::Resolution(res + other),
- MediaFeatureValue::Ratio(ratio) => MediaFeatureValue::Ratio(ratio + other),
- MediaFeatureValue::Ident(id) => MediaFeatureValue::Ident(id),
- MediaFeatureValue::Env(env) => MediaFeatureValue::Env(env), // TODO: calc support
- }
- }
-}
-
/// Consumes an operation or a colon, or returns an error.
fn consume_operation_or_colon<'i, 't>(
input: &mut Parser<'i, 't>,
@@ -1817,7 +1860,7 @@ mod tests {
};
assert_eq!(
media_query.to_css_string(printer_options).unwrap(),
- "screen and not ((min-width: 200px) and (max-width: 499.999px))"
+ "screen and not ((min-width: 200px) and (not (min-width: 500px)))"
);
}
}
From f035bfc5d1d9dd7e10ce89e727170ad98c18b08b Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Tue, 31 Dec 2024 22:43:11 -0500
Subject: [PATCH 050/137] Implement view transitions level 2 (#885)
---
napi/src/transformer.rs | 1 +
node/ast.d.ts | 103 +++++++++++++-
scripts/build-ast.js | 21 +++
scripts/build-prefixes.js | 1 +
src/compat.rs | 41 ++++++
src/lib.rs | 254 ++++++++++++++++++++++++++++++++++-
src/parser.rs | 16 ++-
src/properties/mod.rs | 7 +-
src/properties/transition.rs | 45 +++++++
src/rules/mod.rs | 9 ++
src/rules/view_transition.rs | 196 +++++++++++++++++++++++++++
src/selector.rs | 150 ++++++++++++++-------
src/values/ident.rs | 63 +++++++++
13 files changed, 849 insertions(+), 58 deletions(-)
create mode 100644 src/rules/view_transition.rs
diff --git a/napi/src/transformer.rs b/napi/src/transformer.rs
index ad20c611..e95b60ef 100644
--- a/napi/src/transformer.rs
+++ b/napi/src/transformer.rs
@@ -312,6 +312,7 @@ impl<'i> Visitor<'i, AtRule<'i>> for JsVisitor {
CssRule::Nesting(..) => "nesting",
CssRule::Viewport(..) => "viewport",
CssRule::StartingStyle(..) => "starting-style",
+ CssRule::ViewTransition(..) => "view-transition",
CssRule::Unknown(v) => {
let name = v.name.as_ref();
if let Some(visit) = rule_map.custom(stage, "unknown", name) {
diff --git a/node/ast.d.ts b/node/ast.d.ts
index 19ab2c1f..cf393c79 100644
--- a/node/ast.d.ts
+++ b/node/ast.d.ts
@@ -1,4 +1,4 @@
-/* tslint:disable */
+/* eslint-disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -89,6 +89,10 @@ export type Rule = | {
type: "starting-style";
value: StartingStyleRule;
}
+| {
+ type: "view-transition";
+ value: ViewTransitionRule;
+ }
| {
type: "ignored";
}
@@ -2342,6 +2346,12 @@ export type PropertyId =
| {
property: "view-transition-name";
}
+ | {
+ property: "view-transition-class";
+ }
+ | {
+ property: "view-transition-group";
+ }
| {
property: "color-scheme";
}
@@ -3819,7 +3829,15 @@ export type Declaration =
}
| {
property: "view-transition-name";
- value: String;
+ value: ViewTransitionName;
+ }
+ | {
+ property: "view-transition-class";
+ value: NoneOrCustomIdentList;
+ }
+ | {
+ property: "view-transition-group";
+ value: ViewTransitionGroup;
}
| {
property: "color-scheme";
@@ -6406,6 +6424,21 @@ export type ContainerNameList =
type: "names";
value: String[];
};
+/**
+ * A value for the [view-transition-name](https://drafts.csswg.org/css-view-transitions-1/#view-transition-name-prop) property.
+ */
+export type ViewTransitionName =
+ "none" | "auto" | String;
+/**
+ * The `none` keyword, or a space-separated list of custom idents.
+ */
+export type NoneOrCustomIdentList =
+ "none" | String[];
+/**
+ * A value for the [view-transition-group](https://drafts.csswg.org/css-view-transitions-2/#view-transition-group-prop) property.
+ */
+export type ViewTransitionGroup =
+ "normal" | "contain" | "nearest" | String;
/**
* A [CSS-wide keyword](https://drafts.csswg.org/css-cascade-5/#defaulting-keywords).
*/
@@ -6733,6 +6766,16 @@ export type PseudoClass =
kind: "autofill";
vendorPrefix: VendorPrefix;
}
+ | {
+ kind: "active-view-transition";
+ }
+ | {
+ kind: "active-view-transition-type";
+ /**
+ * A view transition type.
+ */
+ type: String[];
+ }
| {
kind: "local";
/**
@@ -6864,28 +6907,28 @@ export type PseudoElement =
/**
* A part name selector.
*/
- partName: ViewTransitionPartName;
+ part: ViewTransitionPartSelector;
}
| {
kind: "view-transition-image-pair";
/**
* A part name selector.
*/
- partName: ViewTransitionPartName;
+ part: ViewTransitionPartSelector;
}
| {
kind: "view-transition-old";
/**
* A part name selector.
*/
- partName: ViewTransitionPartName;
+ part: ViewTransitionPartSelector;
}
| {
kind: "view-transition-new";
/**
* A part name selector.
*/
- partName: ViewTransitionPartName;
+ part: ViewTransitionPartSelector;
}
| {
kind: "custom";
@@ -7413,6 +7456,28 @@ export type StyleQuery = | {
operator: Operator;
type: "operation";
};
+/**
+ * A property within a `@view-transition` rule.
+ *
+ * See [ViewTransitionRule](ViewTransitionRule).
+ */
+export type ViewTransitionProperty =
+ | {
+ property: "navigation";
+ value: Navigation;
+ }
+ | {
+ property: "types";
+ value: NoneOrCustomIdentList;
+ }
+ | {
+ property: "custom";
+ value: CustomProperty;
+ };
+/**
+ * A value for the [navigation](https://drafts.csswg.org/css-view-transitions-2/#view-transition-navigation-descriptor) property in a `@view-transition` rule.
+ */
+export type Navigation = "none" | "auto";
export type DefaultAtRule = null;
/**
@@ -9126,6 +9191,19 @@ export interface AttrOperation {
operator: AttrSelectorOperator;
value: string;
}
+/**
+ * A [view transition part selector](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#typedef-pt-name-selector).
+ */
+export interface ViewTransitionPartSelector {
+ /**
+ * A list of view transition classes.
+ */
+ classes: String[];
+ /**
+ * The view transition part name.
+ */
+ name?: ViewTransitionPartName | null;
+}
/**
* A [@keyframes](https://drafts.csswg.org/css-animations/#keyframes) rule.
*/
@@ -9545,6 +9623,19 @@ export interface StartingStyleRule {
*/
rules: Rule[];
}
+/**
+ * A [@view-transition](https://drafts.csswg.org/css-view-transitions-2/#view-transition-rule) rule.
+ */
+export interface ViewTransitionRule {
+ /**
+ * The location of the rule in the source file.
+ */
+ loc: Location2;
+ /**
+ * Declarations in the `@view-transition` rule.
+ */
+ properties: ViewTransitionProperty[];
+}
/**
* An unknown at-rule, stored as raw tokens.
*/
diff --git a/scripts/build-ast.js b/scripts/build-ast.js
index de0e7f20..883aa442 100644
--- a/scripts/build-ast.js
+++ b/scripts/build-ast.js
@@ -75,6 +75,27 @@ compileFromFile('node/ast.json', {
if (types[2].type === 'TSTypeLiteral' && types[2].members[0].key.name === 'timelinerange') {
path.get('typeAnnotation.types.2').replaceWith(path.node.typeAnnotation.types[2].members[0].typeAnnotation.typeAnnotation);
}
+ } else if (
+ path.node.id.name === 'NoneOrCustomIdentList' &&
+ path.node.typeAnnotation.type === 'TSUnionType' &&
+ path.node.typeAnnotation.types[1].type === 'TSTypeLiteral' &&
+ path.node.typeAnnotation.types[1].members[0].key.name === 'idents'
+ ) {
+ path.get('typeAnnotation.types.1').replaceWith(path.node.typeAnnotation.types[1].members[0].typeAnnotation.typeAnnotation);
+ } else if (
+ path.node.id.name === 'ViewTransitionGroup' &&
+ path.node.typeAnnotation.type === 'TSUnionType' &&
+ path.node.typeAnnotation.types[3].type === 'TSTypeLiteral' &&
+ path.node.typeAnnotation.types[3].members[0].key.name === 'custom'
+ ) {
+ path.get('typeAnnotation.types.3').replaceWith(path.node.typeAnnotation.types[3].members[0].typeAnnotation.typeAnnotation);
+ } else if (
+ path.node.id.name === 'ViewTransitionName' &&
+ path.node.typeAnnotation.type === 'TSUnionType' &&
+ path.node.typeAnnotation.types[2].type === 'TSTypeLiteral' &&
+ path.node.typeAnnotation.types[2].members[0].key.name === 'custom'
+ ) {
+ path.get('typeAnnotation.types.2').replaceWith(path.node.typeAnnotation.types[2].members[0].typeAnnotation.typeAnnotation);
}
}
});
diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js
index 9ffa67c2..47a42692 100644
--- a/scripts/build-prefixes.js
+++ b/scripts/build-prefixes.js
@@ -331,6 +331,7 @@ let mdnFeatures = {
lightDark: mdn.css.types.color['light-dark'].__compat.support,
accentSystemColor: mdn.css.types.color['system-color'].accentcolor_accentcolortext.__compat.support,
animationTimelineShorthand: mdn.css.properties.animation['animation-timeline_included'].__compat.support,
+ viewTransition: mdn.css.selectors['view-transition'].__compat.support,
};
for (let key in mdn.css.types.length) {
diff --git a/src/compat.rs b/src/compat.rs
index 911b2c86..6f360bb1 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -212,6 +212,7 @@ pub enum Feature {
VbUnit,
VhUnit,
ViUnit,
+ ViewTransition,
ViewportPercentageUnitsDynamic,
ViewportPercentageUnitsLarge,
ViewportPercentageUnitsSmall,
@@ -3464,6 +3465,46 @@ impl Feature {
return false;
}
}
+ Feature::ViewTransition => {
+ if let Some(version) = browsers.chrome {
+ if version < 7143424 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.edge {
+ if version < 7143424 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.opera {
+ if version < 4849664 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.safari {
+ if version < 1179648 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.ios_saf {
+ if version < 1179648 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.samsung {
+ if version < 1376256 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.android {
+ if version < 7143424 {
+ return false;
+ }
+ }
+ if browsers.firefox.is_some() || browsers.ie.is_some() {
+ return false;
+ }
+ }
Feature::QUnit => {
if let Some(version) = browsers.chrome {
if version < 4128768 {
diff --git a/src/lib.rs b/src/lib.rs
index fbba61af..54c2587d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -182,6 +182,7 @@ mod tests {
expected_exports: CssModuleExports,
expected_references: CssModuleReferences,
config: crate::css_modules::Config<'i>,
+ minify: bool,
) {
let mut stylesheet = StyleSheet::parse(
&source,
@@ -193,7 +194,12 @@ mod tests {
)
.unwrap();
stylesheet.minify(MinifyOptions::default()).unwrap();
- let res = stylesheet.to_css(PrinterOptions::default()).unwrap();
+ let res = stylesheet
+ .to_css(PrinterOptions {
+ minify,
+ ..Default::default()
+ })
+ .unwrap();
assert_eq!(res.code, expected);
assert_eq!(res.exports.unwrap(), expected_exports);
assert_eq!(res.references.unwrap(), expected_references);
@@ -6856,6 +6862,19 @@ mod tests {
":root::view-transition {position: fixed}",
":root::view-transition{position:fixed}",
);
+ minify_test(
+ ":root:active-view-transition {position: fixed}",
+ ":root:active-view-transition{position:fixed}",
+ );
+ minify_test(
+ ":root:active-view-transition-type(slide-in) {position: fixed}",
+ ":root:active-view-transition-type(slide-in){position:fixed}",
+ );
+ minify_test(
+ ":root:active-view-transition-type(slide-in, reverse) {position: fixed}",
+ ":root:active-view-transition-type(slide-in,reverse){position:fixed}",
+ );
+
for name in &[
"view-transition-group",
"view-transition-image-pair",
@@ -6866,14 +6885,42 @@ mod tests {
&format!(":root::{}(*) {{position: fixed}}", name),
&format!(":root::{}(*){{position:fixed}}", name),
);
+ minify_test(
+ &format!(":root::{}(*.class) {{position: fixed}}", name),
+ &format!(":root::{}(*.class){{position:fixed}}", name),
+ );
+ minify_test(
+ &format!(":root::{}(*.class.class) {{position: fixed}}", name),
+ &format!(":root::{}(*.class.class){{position:fixed}}", name),
+ );
minify_test(
&format!(":root::{}(foo) {{position: fixed}}", name),
&format!(":root::{}(foo){{position:fixed}}", name),
);
+ minify_test(
+ &format!(":root::{}(foo.class) {{position: fixed}}", name),
+ &format!(":root::{}(foo.class){{position:fixed}}", name),
+ );
+ minify_test(
+ &format!(":root::{}(foo.bar.baz) {{position: fixed}}", name),
+ &format!(":root::{}(foo.bar.baz){{position:fixed}}", name),
+ );
minify_test(
&format!(":root::{}(foo):only-child {{position: fixed}}", name),
&format!(":root::{}(foo):only-child{{position:fixed}}", name),
);
+ minify_test(
+ &format!(":root::{}(foo.bar.baz):only-child {{position: fixed}}", name),
+ &format!(":root::{}(foo.bar.baz):only-child{{position:fixed}}", name),
+ );
+ minify_test(
+ &format!(":root::{}(.foo) {{position: fixed}}", name),
+ &format!(":root::{}(.foo){{position:fixed}}", name),
+ );
+ minify_test(
+ &format!(":root::{}(.foo.bar) {{position: fixed}}", name),
+ &format!(":root::{}(.foo.bar){{position:fixed}}", name),
+ );
error_test(
&format!(":root::{}(foo):first-child {{position: fixed}}", name),
ParserError::SelectorError(SelectorError::InvalidPseudoClassAfterPseudoElement),
@@ -6882,6 +6929,30 @@ mod tests {
&format!(":root::{}(foo)::before {{position: fixed}}", name),
ParserError::SelectorError(SelectorError::InvalidState),
);
+ error_test(
+ &format!(":root::{}(*.*) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
+ error_test(
+ &format!(":root::{}(*. cls) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
+ error_test(
+ &format!(":root::{}(foo .bar) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
+ error_test(
+ &format!(":root::{}(*.cls. c) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
+ error_test(
+ &format!(":root::{}(*.cls>cls) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
+ error_test(
+ &format!(":root::{}(*.cls.foo.*) {{position: fixed}}", name),
+ ParserError::SelectorError(SelectorError::InvalidState),
+ );
}
minify_test(".foo ::deep .bar {width: 20px}", ".foo ::deep .bar{width:20px}");
@@ -23860,6 +23931,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -23906,6 +23978,7 @@ mod tests {
// custom_idents: false,
..Default::default()
},
+ false,
);
css_modules_test(
@@ -23951,6 +24024,7 @@ mod tests {
custom_idents: false,
..Default::default()
},
+ false,
);
#[cfg(feature = "grid")]
@@ -23995,6 +24069,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
#[cfg(feature = "grid")]
@@ -24033,6 +24108,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
#[cfg(feature = "grid")]
@@ -24073,6 +24149,7 @@ mod tests {
grid: false,
..Default::default()
},
+ false,
);
css_modules_test(
@@ -24089,6 +24166,7 @@ mod tests {
map! {},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24123,6 +24201,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
// :global(:local(.hi)) {
@@ -24155,6 +24234,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24184,6 +24264,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24221,6 +24302,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24240,6 +24322,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24259,6 +24342,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24278,6 +24362,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24297,6 +24382,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24327,6 +24413,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24348,6 +24435,7 @@ mod tests {
pattern: crate::css_modules::Pattern::parse("test-[hash]-[local]").unwrap(),
..Default::default()
},
+ false,
);
let stylesheet = StyleSheet::parse(
@@ -24409,6 +24497,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
@@ -24478,6 +24567,7 @@ mod tests {
dashed_idents: true,
..Default::default()
},
+ false,
);
css_modules_test(
@@ -24497,6 +24587,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
r#"
@@ -24514,6 +24605,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
r#"
@@ -24531,6 +24623,7 @@ mod tests {
},
HashMap::new(),
Default::default(),
+ false,
);
css_modules_test(
r#"
@@ -24551,6 +24644,7 @@ mod tests {
animation: false,
..Default::default()
},
+ false,
);
css_modules_test(
r#"
@@ -24569,6 +24663,7 @@ mod tests {
},
HashMap::new(),
crate::css_modules::Config { ..Default::default() },
+ false,
);
css_modules_test(
@@ -24591,6 +24686,7 @@ mod tests {
pattern: crate::css_modules::Pattern::parse("[content-hash]-[local]").unwrap(),
..Default::default()
},
+ false,
);
css_modules_test(
@@ -24616,6 +24712,7 @@ mod tests {
},
HashMap::new(),
crate::css_modules::Config { ..Default::default() },
+ false,
);
css_modules_test(
@@ -24643,8 +24740,142 @@ mod tests {
container: false,
..Default::default()
},
+ false,
+ );
+
+ css_modules_test(
+ ".foo { view-transition-name: bar }",
+ ".EgL3uq_foo{view-transition-name:EgL3uq_bar}",
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ ".foo { view-transition-name: none }",
+ ".EgL3uq_foo{view-transition-name:none}",
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ ".foo { view-transition-name: auto }",
+ ".EgL3uq_foo{view-transition-name:auto}",
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+
+ css_modules_test(
+ ".foo { view-transition-class: bar baz qux }",
+ ".EgL3uq_foo{view-transition-class:EgL3uq_bar EgL3uq_baz EgL3uq_qux}",
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar",
+ "baz" => "EgL3uq_baz",
+ "qux" => "EgL3uq_qux"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+
+ css_modules_test(
+ ".foo { view-transition-group: contain }",
+ ".EgL3uq_foo{view-transition-group:contain}",
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ ".foo { view-transition-group: bar }",
+ ".EgL3uq_foo{view-transition-group:EgL3uq_bar}",
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+
+ css_modules_test(
+ "@view-transition { types: foo bar baz }",
+ "@view-transition{types:EgL3uq_foo EgL3uq_bar EgL3uq_baz}",
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar",
+ "baz" => "EgL3uq_baz"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+
+ css_modules_test(
+ ":root:active-view-transition-type(foo, bar) { color: red }",
+ ":root:active-view-transition-type(EgL3uq_foo,EgL3uq_bar){color:red}",
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
);
+ for name in &[
+ "view-transition-group",
+ "view-transition-image-pair",
+ "view-transition-new",
+ "view-transition-old",
+ ] {
+ css_modules_test(
+ &format!(":root::{}(foo) {{position: fixed}}", name),
+ &format!(":root::{}(EgL3uq_foo){{position:fixed}}", name),
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ &format!(":root::{}(.bar) {{position: fixed}}", name),
+ &format!(":root::{}(.EgL3uq_bar){{position:fixed}}", name),
+ map! {
+ "bar" => "EgL3uq_bar"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ &format!(":root::{}(foo.bar.baz) {{position: fixed}}", name),
+ &format!(":root::{}(EgL3uq_foo.EgL3uq_bar.EgL3uq_baz){{position:fixed}}", name),
+ map! {
+ "foo" => "EgL3uq_foo",
+ "bar" => "EgL3uq_bar",
+ "baz" => "EgL3uq_baz"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ }
+
// Stable hashes between project roots.
fn test_project_root(project_root: &str, filename: &str, hash: &str) {
let stylesheet = StyleSheet::parse(
@@ -28143,6 +28374,7 @@ mod tests {
dashed_idents: true,
..Default::default()
},
+ false,
);
}
@@ -28490,4 +28722,24 @@ mod tests {
".foo{--bar:currentcolor;--foo:1.1em;all:unset}",
);
}
+
+ #[test]
+ fn test_view_transition() {
+ minify_test(
+ "@view-transition { navigation: auto }",
+ "@view-transition{navigation:auto}",
+ );
+ minify_test(
+ "@view-transition { navigation: auto; types: none; }",
+ "@view-transition{navigation:auto;types:none}",
+ );
+ minify_test(
+ "@view-transition { navigation: auto; types: foo bar; }",
+ "@view-transition{navigation:auto;types:foo bar}",
+ );
+ minify_test(
+ "@layer { @view-transition { navigation: auto; types: foo bar; } }",
+ "@layer{@view-transition{navigation:auto;types:foo bar}}",
+ );
+ }
}
diff --git a/src/parser.rs b/src/parser.rs
index 080753be..a40ee5b1 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -9,6 +9,7 @@ use crate::rules::layer::{LayerBlockRule, LayerStatementRule};
use crate::rules::property::PropertyRule;
use crate::rules::scope::ScopeRule;
use crate::rules::starting_style::StartingStyleRule;
+use crate::rules::view_transition::ViewTransitionRule;
use crate::rules::viewport::ViewportRule;
use crate::rules::{
@@ -214,6 +215,8 @@ pub enum AtRulePrelude<'i, T> {
StartingStyle,
/// A @scope rule prelude.
Scope(Option<'i>>, Option<'i>>),
+ /// A @view-transition rule prelude.
+ ViewTransition,
/// An unknown prelude.
Unknown(CowArcStr<'i>, TokenList<'i>),
/// A custom prelude.
@@ -249,7 +252,8 @@ impl<'i, T> AtRulePrelude<'i, T> {
| Self::Import(..)
| Self::CustomMedia(..)
| Self::Viewport(..)
- | Self::Charset => false,
+ | Self::Charset
+ | Self::ViewTransition => false,
}
}
}
@@ -669,6 +673,9 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
AtRulePrelude::Scope(scope_start, scope_end)
},
+ "view-transition" => {
+ AtRulePrelude::ViewTransition
+ },
"nest" if self.is_in_style_rule => {
self.options.warn(input.new_custom_error(ParserError::DeprecatedNestRule));
let selector_parser = SelectorParser {
@@ -833,6 +840,13 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
self.rules.0.push(CssRule::StartingStyle(StartingStyleRule { rules, loc }));
Ok(())
}
+ AtRulePrelude::ViewTransition => {
+ self
+ .rules
+ .0
+ .push(CssRule::ViewTransition(ViewTransitionRule::parse(input, loc)?));
+ Ok(())
+ }
AtRulePrelude::Nest(selectors) => {
let (declarations, rules) = self.parse_nested(input, true)?;
self.rules.0.push(CssRule::Nesting(NestingRule {
diff --git a/src/properties/mod.rs b/src/properties/mod.rs
index 7c5f4071..00667a30 100644
--- a/src/properties/mod.rs
+++ b/src/properties/mod.rs
@@ -133,7 +133,7 @@ use crate::traits::{Parse, ParseWithOptions, Shorthand, ToCss};
use crate::values::number::{CSSInteger, CSSNumber};
use crate::values::string::CowArcStr;
use crate::values::{
- alpha::*, color::*, easing::EasingFunction, ident::CustomIdent, ident::DashedIdentReference, image::*,
+ alpha::*, color::*, easing::EasingFunction, ident::DashedIdentReference, ident::NoneOrCustomIdentList, image::*,
length::*, position::*, rect::*, shape::FillRule, size::Size2D, time::Time,
};
use crate::vendor_prefix::VendorPrefix;
@@ -1638,7 +1638,10 @@ define_properties! {
"container": Container(Container<'i>) shorthand: true,
// https://w3c.github.io/csswg-drafts/css-view-transitions-1/
- "view-transition-name": ViewTransitionName(CustomIdent<'i>),
+ "view-transition-name": ViewTransitionName(ViewTransitionName<'i>),
+ // https://drafts.csswg.org/css-view-transitions-2/
+ "view-transition-class": ViewTransitionClass(NoneOrCustomIdentList<'i>),
+ "view-transition-group": ViewTransitionGroup(ViewTransitionGroup<'i>),
// https://drafts.csswg.org/css-color-adjust/
"color-scheme": ColorScheme(ColorScheme),
diff --git a/src/properties/transition.rs b/src/properties/transition.rs
index be95d5ab..8d6a6629 100644
--- a/src/properties/transition.rs
+++ b/src/properties/transition.rs
@@ -10,6 +10,7 @@ use crate::prefixes::Feature;
use crate::printer::Printer;
use crate::properties::masking::get_webkit_mask_property;
use crate::traits::{Parse, PropertyHandler, Shorthand, ToCss, Zero};
+use crate::values::ident::CustomIdent;
use crate::values::{easing::EasingFunction, time::Time};
use crate::vendor_prefix::VendorPrefix;
#[cfg(feature = "visitor")]
@@ -106,6 +107,50 @@ impl<'i> ToCss for Transition<'i> {
}
}
+/// A value for the [view-transition-name](https://drafts.csswg.org/css-view-transitions-1/#view-transition-name-prop) property.
+#[derive(Debug, Clone, PartialEq, Default, Parse, ToCss)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub enum ViewTransitionName<'i> {
+ /// The element will not participate independently in a view transition.
+ #[default]
+ None,
+ /// The `auto` keyword.
+ Auto,
+ /// A custom name.
+ #[cfg_attr(feature = "serde", serde(borrow, untagged))]
+ Custom(CustomIdent<'i>),
+}
+
+/// A value for the [view-transition-group](https://drafts.csswg.org/css-view-transitions-2/#view-transition-group-prop) property.
+#[derive(Debug, Clone, PartialEq, Default, Parse, ToCss)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub enum ViewTransitionGroup<'i> {
+ /// The `normal` keyword.
+ #[default]
+ Normal,
+ /// The `contain` keyword.
+ Contain,
+ /// The `nearest` keyword.
+ Nearest,
+ /// A custom group.
+ #[cfg_attr(feature = "serde", serde(borrow, untagged))]
+ Custom(CustomIdent<'i>),
+}
+
#[derive(Default)]
pub(crate) struct TransitionHandler<'i> {
properties: Option<(SmallVec<[PropertyId<'i>; 1]>, VendorPrefix)>,
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 4655a6e6..8d986f4e 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -55,6 +55,7 @@ pub mod starting_style;
pub mod style;
pub mod supports;
pub mod unknown;
+pub mod view_transition;
pub mod viewport;
use self::font_palette_values::FontPaletteValuesRule;
@@ -97,6 +98,7 @@ use std::hash::{BuildHasherDefault, Hasher};
use style::StyleRule;
use supports::SupportsRule;
use unknown::UnknownAtRule;
+use view_transition::ViewTransitionRule;
use viewport::ViewportRule;
#[derive(Clone)]
@@ -174,6 +176,8 @@ pub enum CssRule<'i, R = DefaultAtRule> {
Scope(ScopeRule<'i, R>),
/// A `@starting-style` rule.
StartingStyle(StartingStyleRule<'i, R>),
+ /// A `@view-transition` rule.
+ ViewTransition(ViewTransitionRule<'i>),
/// A placeholder for a rule that was removed.
Ignored,
/// An unknown at-rule.
@@ -318,6 +322,10 @@ impl<'i, 'de: 'i, R: serde::Deserialize<'de>> serde::Deserialize<'de> for CssRul
let rule = StartingStyleRule::deserialize(deserializer)?;
Ok(CssRule::StartingStyle(rule))
}
+ "view-transition" => {
+ let rule = ViewTransitionRule::deserialize(deserializer)?;
+ Ok(CssRule::ViewTransition(rule))
+ }
"ignored" => Ok(CssRule::Ignored),
"unknown" => {
let rule = UnknownAtRule::deserialize(deserializer)?;
@@ -358,6 +366,7 @@ impl<'a, 'i, T: ToCss> ToCss for CssRule<'i, T> {
CssRule::StartingStyle(rule) => rule.to_css(dest),
CssRule::Container(container) => container.to_css(dest),
CssRule::Scope(scope) => scope.to_css(dest),
+ CssRule::ViewTransition(rule) => rule.to_css(dest),
CssRule::Unknown(unknown) => unknown.to_css(dest),
CssRule::Custom(rule) => rule.to_css(dest).map_err(|_| PrinterError {
kind: PrinterErrorKind::FmtError,
diff --git a/src/rules/view_transition.rs b/src/rules/view_transition.rs
new file mode 100644
index 00000000..fac6ec65
--- /dev/null
+++ b/src/rules/view_transition.rs
@@ -0,0 +1,196 @@
+//! The `@view-transition` rule.
+
+use super::Location;
+use crate::error::{ParserError, PrinterError};
+use crate::printer::Printer;
+use crate::properties::custom::CustomProperty;
+use crate::stylesheet::ParserOptions;
+use crate::traits::{Parse, ToCss};
+use crate::values::ident::NoneOrCustomIdentList;
+#[cfg(feature = "visitor")]
+use crate::visitor::Visit;
+use cssparser::*;
+
+/// A [@view-transition](https://drafts.csswg.org/css-view-transitions-2/#view-transition-rule) rule.
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub struct ViewTransitionRule<'i> {
+ /// Declarations in the `@view-transition` rule.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub properties: Vec<'i>>,
+ /// The location of the rule in the source file.
+ #[cfg_attr(feature = "visitor", skip_visit)]
+ pub loc: Location,
+}
+
+/// A property within a `@view-transition` rule.
+///
+/// See [ViewTransitionRule](ViewTransitionRule).
+#[derive(Debug, Clone, PartialEq)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(tag = "property", content = "value", rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub enum ViewTransitionProperty<'i> {
+ /// The `navigation` property.
+ Navigation(Navigation),
+ /// The `types` property.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ Types(NoneOrCustomIdentList<'i>),
+ /// An unknown or unsupported property.
+ Custom(CustomProperty<'i>),
+}
+
+/// A value for the [navigation](https://drafts.csswg.org/css-view-transitions-2/#view-transition-navigation-descriptor)
+/// property in a `@view-transition` rule.
+#[derive(Debug, Clone, PartialEq, Default, Parse, ToCss)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub enum Navigation {
+ /// There will be no transition.
+ #[default]
+ None,
+ /// The transition will be enabled if the navigation is same-origin.
+ Auto,
+}
+
+pub(crate) struct ViewTransitionDeclarationParser;
+
+impl<'i> cssparser::DeclarationParser<'i> for ViewTransitionDeclarationParser {
+ type Declaration = ViewTransitionProperty<'i>;
+ type Error = ParserError<'i>;
+
+ fn parse_value<'t>(
+ &mut self,
+ name: CowRcStr<'i>,
+ input: &mut cssparser::Parser<'i, 't>,
+ ) -> Result<'i, Self::Error>> {
+ let state = input.state();
+ match_ignore_ascii_case! { &name,
+ "navigation" => {
+ // https://drafts.csswg.org/css-view-transitions-2/#view-transition-navigation-descriptor
+ if let Ok(navigation) = Navigation::parse(input) {
+ return Ok(ViewTransitionProperty::Navigation(navigation));
+ }
+ },
+ "types" => {
+ // https://drafts.csswg.org/css-view-transitions-2/#types-cross-doc
+ if let Ok(types) = NoneOrCustomIdentList::parse(input) {
+ return Ok(ViewTransitionProperty::Types(types));
+ }
+ },
+ _ => return Err(input.new_custom_error(ParserError::InvalidDeclaration))
+ }
+
+ input.reset(&state);
+ return Ok(ViewTransitionProperty::Custom(CustomProperty::parse(
+ name.into(),
+ input,
+ &ParserOptions::default(),
+ )?));
+ }
+}
+
+/// Default methods reject all at rules.
+impl<'i> AtRuleParser<'i> for ViewTransitionDeclarationParser {
+ type Prelude = ();
+ type AtRule = ViewTransitionProperty<'i>;
+ type Error = ParserError<'i>;
+}
+
+impl<'i> QualifiedRuleParser<'i> for ViewTransitionDeclarationParser {
+ type Prelude = ();
+ type QualifiedRule = ViewTransitionProperty<'i>;
+ type Error = ParserError<'i>;
+}
+
+impl<'i> RuleBodyItemParser<'i, ViewTransitionProperty<'i>, ParserError<'i>> for ViewTransitionDeclarationParser {
+ fn parse_qualified(&self) -> bool {
+ false
+ }
+
+ fn parse_declarations(&self) -> bool {
+ true
+ }
+}
+
+impl<'i> ViewTransitionRule<'i> {
+ pub(crate) fn parse<'t>(
+ input: &mut Parser<'i, 't>,
+ loc: Location,
+ ) -> Result<'i, ParserError<'i>>> {
+ let mut decl_parser = ViewTransitionDeclarationParser;
+ let mut parser = RuleBodyParser::new(input, &mut decl_parser);
+ let mut properties = vec![];
+ while let Some(decl) = parser.next() {
+ if let Ok(decl) = decl {
+ properties.push(decl);
+ }
+ }
+
+ Ok(ViewTransitionRule { properties, loc })
+ }
+}
+
+impl<'i> ToCss for ViewTransitionRule<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ #[cfg(feature = "sourcemap")]
+ dest.add_mapping(self.loc);
+ dest.write_str("@view-transition")?;
+ dest.whitespace()?;
+ dest.write_char('{')?;
+ dest.indent();
+ let len = self.properties.len();
+ for (i, prop) in self.properties.iter().enumerate() {
+ dest.newline()?;
+ prop.to_css(dest)?;
+ if i != len - 1 || !dest.minify {
+ dest.write_char(';')?;
+ }
+ }
+ dest.dedent();
+ dest.newline()?;
+ dest.write_char('}')
+ }
+}
+
+impl<'i> ToCss for ViewTransitionProperty<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ macro_rules! property {
+ ($prop: literal, $value: expr) => {{
+ dest.write_str($prop)?;
+ dest.delim(':', false)?;
+ $value.to_css(dest)
+ }};
+ }
+
+ match self {
+ ViewTransitionProperty::Navigation(f) => property!("navigation", f),
+ ViewTransitionProperty::Types(t) => property!("types", t),
+ ViewTransitionProperty::Custom(custom) => {
+ dest.write_str(custom.name.as_ref())?;
+ dest.delim(':', false)?;
+ custom.value.to_css(dest, true)
+ }
+ }
+ }
+}
diff --git a/src/selector.rs b/src/selector.rs
index 73311c8a..86507b58 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -1,7 +1,7 @@
//! CSS selectors.
use crate::compat::Feature;
-use crate::error::{ParserError, PrinterError};
+use crate::error::{ParserError, PrinterError, SelectorError};
use crate::parser::ParserFlags;
use crate::printer::Printer;
use crate::properties::custom::TokenList;
@@ -21,6 +21,7 @@ use parcel_selectors::{
attr::{AttrSelectorOperator, ParsedAttrSelectorOperation, ParsedCaseSensitivity},
parser::SelectorImpl,
};
+use smallvec::SmallVec;
use std::collections::HashSet;
use std::fmt;
@@ -177,6 +178,9 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
"-webkit-autofill" => Autofill(VendorPrefix::WebKit),
"-o-autofill" => Autofill(VendorPrefix::O),
+ // https://drafts.csswg.org/css-view-transitions-2/#pseudo-classes-for-selective-vt
+ "active-view-transition" => ActiveViewTransition,
+
// https://webkit.org/blog/363/styling-scrollbars/
"horizontal" => WebKitScrollbar(WebKitScrollbarPseudoClass::Horizontal),
"vertical" => WebKitScrollbar(WebKitScrollbarPseudoClass::Vertical),
@@ -221,6 +225,11 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
Lang { languages }
},
"dir" => Dir { direction: Direction::parse(parser)? },
+ // https://drafts.csswg.org/css-view-transitions-2/#the-active-view-transition-type-pseudo
+ "active-view-transition-type" => {
+ let kind = Parse::parse(parser)?;
+ ActiveViewTransitionType { kind }
+ },
"local" if self.options.css_modules.is_some() => Local { selector: Box::new(Selector::parse(self, parser)?) },
"global" if self.options.css_modules.is_some() => Global { selector: Box::new(Selector::parse(self, parser)?) },
_ => {
@@ -303,10 +312,10 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
let pseudo_element = match_ignore_ascii_case! { &name,
"cue" => CueFunction { selector: Box::new(Selector::parse(self, arguments)?) },
"cue-region" => CueRegionFunction { selector: Box::new(Selector::parse(self, arguments)?) },
- "view-transition-group" => ViewTransitionGroup { part_name: ViewTransitionPartName::parse(arguments)? },
- "view-transition-image-pair" => ViewTransitionImagePair { part_name: ViewTransitionPartName::parse(arguments)? },
- "view-transition-old" => ViewTransitionOld { part_name: ViewTransitionPartName::parse(arguments)? },
- "view-transition-new" => ViewTransitionNew { part_name: ViewTransitionPartName::parse(arguments)? },
+ "view-transition-group" => ViewTransitionGroup { part: ViewTransitionPartSelector::parse(arguments)? },
+ "view-transition-image-pair" => ViewTransitionImagePair { part: ViewTransitionPartSelector::parse(arguments)? },
+ "view-transition-old" => ViewTransitionOld { part: ViewTransitionPartSelector::parse(arguments)? },
+ "view-transition-new" => ViewTransitionNew { part: ViewTransitionPartSelector::parse(arguments)? },
_ => {
if !name.starts_with('-') {
self.options.warn(arguments.new_custom_error(SelectorParseErrorKind::UnsupportedPseudoElement(name.clone())));
@@ -507,6 +516,15 @@ pub enum PseudoClass<'i> {
#[cfg_attr(feature = "serde", serde(with = "PrefixWrapper"))]
Autofill(VendorPrefix),
+ /// The [:active-view-transition](https://drafts.csswg.org/css-view-transitions-2/#the-active-view-transition-pseudo) pseudo class.
+ ActiveViewTransition,
+ /// The [:active-view-transition-type()](https://drafts.csswg.org/css-view-transitions-2/#the-active-view-transition-type-pseudo) pseudo class.
+ ActiveViewTransitionType {
+ /// A view transition type.
+ #[cfg_attr(feature = "serde", serde(rename = "type"))]
+ kind: SmallVec<[CustomIdent<'i>; 1]>,
+ },
+
// CSS modules
/// The CSS modules :local() pseudo class.
Local {
@@ -763,6 +781,13 @@ where
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill
Autofill(prefix) => write_prefixed!(prefix, "autofill"),
+ ActiveViewTransition => dest.write_str(":active-view-transition"),
+ ActiveViewTransitionType { kind } => {
+ dest.write_str(":active-view-transition-type(")?;
+ kind.to_css(dest)?;
+ dest.write_char(')')
+ }
+
Local { selector } => serialize_selector(selector, dest, context, false),
Global { selector } => {
let css_module = std::mem::take(&mut dest.css_module);
@@ -902,25 +927,25 @@ pub enum PseudoElement<'i> {
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
ViewTransitionGroup {
/// A part name selector.
- part_name: ViewTransitionPartName<'i>,
+ part: ViewTransitionPartSelector<'i>,
},
/// The [::view-transition-image-pair()](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#view-transition-image-pair-pt-name-selector) functional pseudo element.
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
ViewTransitionImagePair {
/// A part name selector.
- part_name: ViewTransitionPartName<'i>,
+ part: ViewTransitionPartSelector<'i>,
},
/// The [::view-transition-old()](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#view-transition-old-pt-name-selector) functional pseudo element.
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
ViewTransitionOld {
/// A part name selector.
- part_name: ViewTransitionPartName<'i>,
+ part: ViewTransitionPartSelector<'i>,
},
/// The [::view-transition-new()](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#view-transition-new-pt-name-selector) functional pseudo element.
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
ViewTransitionNew {
/// A part name selector.
- part_name: ViewTransitionPartName<'i>,
+ part: ViewTransitionPartSelector<'i>,
},
/// An unknown pseudo element.
Custom {
@@ -965,44 +990,17 @@ pub enum WebKitScrollbarPseudoElement {
/// A [view transition part name](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#typedef-pt-name-selector).
#[derive(PartialEq, Eq, Clone, Debug, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
pub enum ViewTransitionPartName<'i> {
/// *
+ #[cfg_attr(feature = "serde", serde(rename = "*"))]
All,
///
+ #[cfg_attr(feature = "serde", serde(borrow, untagged))]
Name(CustomIdent<'i>),
}
-#[cfg(feature = "serde")]
-#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
-impl<'i> serde::Serialize for ViewTransitionPartName<'i> {
- fn serialize
(&self, serializer: S) -> Result
- where
- S: serde::Serializer,
- {
- match self {
- ViewTransitionPartName::All => serializer.serialize_str("*"),
- ViewTransitionPartName::Name(name) => serializer.serialize_str(&name.0),
- }
- }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
-impl<'i, 'de: 'i> serde::Deserialize<'de> for ViewTransitionPartName<'i> {
- fn deserialize(deserializer: D) -> Result
- where
- D: serde::Deserializer<'de>,
- {
- let s = CowArcStr::deserialize(deserializer)?;
- if s == "*" {
- Ok(ViewTransitionPartName::All)
- } else {
- Ok(ViewTransitionPartName::Name(CustomIdent(s)))
- }
- }
-}
-
#[cfg(feature = "jsonschema")]
#[cfg_attr(docsrs, doc(cfg(feature = "jsonschema")))]
impl<'a> schemars::JsonSchema for ViewTransitionPartName<'a> {
@@ -1041,6 +1039,55 @@ impl<'i> ToCss for ViewTransitionPartName<'i> {
}
}
+/// A [view transition part selector](https://w3c.github.io/csswg-drafts/css-view-transitions-1/#typedef-pt-name-selector).
+#[derive(PartialEq, Eq, Clone, Debug, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub struct ViewTransitionPartSelector<'i> {
+ /// The view transition part name.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ name: Option<'i>>,
+ /// A list of view transition classes.
+ classes: Vec<'i>>,
+}
+
+impl<'i> Parse<'i> for ViewTransitionPartSelector<'i> {
+ fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+ input.skip_whitespace();
+ let name = input.try_parse(ViewTransitionPartName::parse).ok();
+ let mut classes = Vec::new();
+ while let Ok(token) = input.next_including_whitespace() {
+ if matches!(token, Token::Delim('.')) {
+ match input.next_including_whitespace() {
+ Ok(Token::Ident(id)) => classes.push(CustomIdent(id.into())),
+ _ => return Err(input.new_custom_error(ParserError::SelectorError(SelectorError::InvalidState))),
+ }
+ } else {
+ return Err(input.new_custom_error(ParserError::SelectorError(SelectorError::InvalidState)));
+ }
+ }
+
+ Ok(ViewTransitionPartSelector { name, classes })
+ }
+}
+
+impl<'i> ToCss for ViewTransitionPartSelector<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ if let Some(name) = &self.name {
+ name.to_css(dest)?;
+ }
+ for class in &self.classes {
+ dest.write_char('.')?;
+ class.to_css(dest)?;
+ }
+ Ok(())
+ }
+}
+
impl<'i> cssparser::ToCss for PseudoElement<'i> {
fn to_css(&self, dest: &mut W) -> std::fmt::Result
where
@@ -1138,24 +1185,24 @@ where
})
}
ViewTransition => dest.write_str("::view-transition"),
- ViewTransitionGroup { part_name } => {
+ ViewTransitionGroup { part } => {
dest.write_str("::view-transition-group(")?;
- part_name.to_css(dest)?;
+ part.to_css(dest)?;
dest.write_char(')')
}
- ViewTransitionImagePair { part_name } => {
+ ViewTransitionImagePair { part } => {
dest.write_str("::view-transition-image-pair(")?;
- part_name.to_css(dest)?;
+ part.to_css(dest)?;
dest.write_char(')')
}
- ViewTransitionOld { part_name } => {
+ ViewTransitionOld { part } => {
dest.write_str("::view-transition-old(")?;
- part_name.to_css(dest)?;
+ part.to_css(dest)?;
dest.write_char(')')
}
- ViewTransitionNew { part_name } => {
+ ViewTransitionNew { part } => {
dest.write_str("::view-transition-new(")?;
- part_name.to_css(dest)?;
+ part.to_css(dest)?;
dest.write_char(')')
}
Custom { name: val } => {
@@ -1836,7 +1883,9 @@ pub(crate) fn is_compatible(selectors: &[Selector], targets: Targets) -> bool {
| PseudoClass::Blank
| PseudoClass::UserInvalid
| PseudoClass::UserValid
- | PseudoClass::Defined => return false,
+ | PseudoClass::Defined
+ | PseudoClass::ActiveViewTransition
+ | PseudoClass::ActiveViewTransitionType { .. } => return false,
PseudoClass::Custom { .. } | _ => return false,
}
@@ -1852,6 +1901,11 @@ pub(crate) fn is_compatible(selectors: &[Selector], targets: Targets) -> bool {
PseudoElement::Backdrop(prefix) if *prefix == VendorPrefix::None => Feature::Dialog,
PseudoElement::Cue => Feature::Cue,
PseudoElement::CueFunction { selector: _ } => Feature::CueFunction,
+ PseudoElement::ViewTransition
+ | PseudoElement::ViewTransitionNew { .. }
+ | PseudoElement::ViewTransitionOld { .. }
+ | PseudoElement::ViewTransitionGroup { .. }
+ | PseudoElement::ViewTransitionImagePair { .. } => Feature::ViewTransition,
PseudoElement::Custom { name: _ } | _ => return false,
},
diff --git a/src/values/ident.rs b/src/values/ident.rs
index 173d3a08..be850f8b 100644
--- a/src/values/ident.rs
+++ b/src/values/ident.rs
@@ -75,6 +75,69 @@ impl<'i> CustomIdent<'i> {
/// A list of CSS [``](https://www.w3.org/TR/css-values-4/#custom-idents) values.
pub type CustomIdentList<'i> = SmallVec<[CustomIdent<'i>; 1]>;
+/// The `none` keyword, or a space-separated list of custom idents.
+#[derive(Debug, Clone, PartialEq, Default)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub enum NoneOrCustomIdentList<'i> {
+ /// None.
+ #[default]
+ None,
+ /// A list of idents.
+ #[cfg_attr(feature = "serde", serde(borrow, untagged))]
+ Idents(SmallVec<[CustomIdent<'i>; 1]>),
+}
+
+impl<'i> Parse<'i> for NoneOrCustomIdentList<'i> {
+ fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+ let mut types = SmallVec::new();
+ loop {
+ if let Ok(ident) = input.try_parse(CustomIdent::parse) {
+ if ident == "none" {
+ if types.is_empty() {
+ return Ok(NoneOrCustomIdentList::None);
+ } else {
+ return Err(input.new_custom_error(ParserError::InvalidValue));
+ }
+ }
+
+ types.push(ident);
+ } else {
+ return Ok(NoneOrCustomIdentList::Idents(types));
+ }
+ }
+ }
+}
+
+impl<'i> ToCss for NoneOrCustomIdentList<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ match self {
+ NoneOrCustomIdentList::None => dest.write_str("none"),
+ NoneOrCustomIdentList::Idents(types) => {
+ let mut first = true;
+ for ident in types {
+ if !first {
+ dest.write_char(' ')?;
+ } else {
+ first = false;
+ }
+ ident.to_css(dest)?;
+ }
+ Ok(())
+ }
+ }
+ }
+}
+
/// A CSS [``](https://www.w3.org/TR/css-values-4/#dashed-idents) declaration.
///
/// Dashed idents are used in cases where an identifier can be either author defined _or_ CSS-defined.
From 4cffb66c3269f49aca95c5095773f5bb26ba5b12 Mon Sep 17 00:00:00 2001
From: Jason
Date: Wed, 1 Jan 2025 14:02:20 +0800
Subject: [PATCH 051/137] feat: @font-feature-values (#840)
---
Cargo.lock | 2 +
Cargo.toml | 5 +-
napi/src/transformer.rs | 1 +
node/ast.d.ts | 53 +++++
src/lib.rs | 119 +++++++++++
src/parser.rs | 98 +++++----
src/properties/font.rs | 83 +++++---
src/rules/font_feature_values.rs | 331 +++++++++++++++++++++++++++++++
src/rules/mod.rs | 25 ++-
src/visitor.rs | 18 ++
static-self/Cargo.toml | 1 +
static-self/src/lib.rs | 14 ++
12 files changed, 675 insertions(+), 75 deletions(-)
create mode 100644 src/rules/font_feature_values.rs
diff --git a/Cargo.lock b/Cargo.lock
index c93409d3..65ddfd42 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1339,6 +1339,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92"
dependencies = [
"dyn-clone",
+ "indexmap 2.7.0",
"schemars_derive",
"serde",
"serde_json",
@@ -1477,6 +1478,7 @@ dependencies = [
name = "static-self"
version = "0.1.1"
dependencies = [
+ "indexmap 2.7.0",
"smallvec",
"static-self-derive",
]
diff --git a/Cargo.toml b/Cargo.toml
index 0f97acaf..430e37dc 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,6 +53,7 @@ visitor = []
into_owned = [
"static-self",
"static-self/smallvec",
+ "static-self/indexmap",
"parcel_selectors/into_owned",
]
substitute_variables = ["visitor", "into_owned"]
@@ -72,7 +73,7 @@ const-str = "0.3.1"
pathdiff = "0.2.1"
ahash = "0.8.7"
paste = "1.0.12"
-indexmap = "2.2.6"
+indexmap = { version = "2.2.6", features = ["serde"] }
# CLI deps
atty = { version = "0.2", optional = true }
clap = { version = "3.0.6", features = ["derive"], optional = true }
@@ -81,7 +82,7 @@ rayon = { version = "1.5.1", optional = true }
dashmap = { version = "5.0.0", optional = true }
serde_json = { version = "1.0.78", optional = true }
lightningcss-derive = { version = "=1.0.0-alpha.43", path = "./derive" }
-schemars = { version = "0.8.19", features = ["smallvec"], optional = true }
+schemars = { version = "0.8.19", features = ["smallvec", "indexmap2"], optional = true }
static-self = { version = "0.1.0", path = "static-self", optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
diff --git a/napi/src/transformer.rs b/napi/src/transformer.rs
index e95b60ef..de4f5075 100644
--- a/napi/src/transformer.rs
+++ b/napi/src/transformer.rs
@@ -298,6 +298,7 @@ impl<'i> Visitor<'i, AtRule<'i>> for JsVisitor {
CssRule::Keyframes(..) => "keyframes",
CssRule::FontFace(..) => "font-face",
CssRule::FontPaletteValues(..) => "font-palette-values",
+ CssRule::FontFeatureValues(..) => "font-feature-values",
CssRule::Page(..) => "page",
CssRule::Supports(..) => "supports",
CssRule::CounterStyle(..) => "counter-style",
diff --git a/node/ast.d.ts b/node/ast.d.ts
index cf393c79..cc198e2e 100644
--- a/node/ast.d.ts
+++ b/node/ast.d.ts
@@ -33,6 +33,10 @@ export type Rule = | {
type: "font-palette-values";
value: FontPaletteValuesRule;
}
+| {
+ type: "font-feature-values";
+ value: FontFeatureValuesRule;
+ }
| {
type: "page";
value: PageRule;
@@ -7159,6 +7163,17 @@ export type BasePalette =
type: "integer";
value: number;
};
+/**
+ * The name of the `@font-feature-values` sub-rule. font-feature-value-type = <@stylistic> | <@historical-forms> | <@styleset> | <@character-variant> | <@swash> | <@ornaments> | <@annotation>
+ */
+export type FontFeatureSubruleType =
+ | "stylistic"
+ | "historical-forms"
+ | "styleset"
+ | "character-variant"
+ | "swash"
+ | "ornaments"
+ | "annotation";
/**
* A [page margin box](https://www.w3.org/TR/css-page-3/#margin-boxes).
*/
@@ -9328,6 +9343,44 @@ export interface OverrideColors {
*/
index: number;
}
+/**
+ * A [@font-feature-values](https://drafts.csswg.org/css-fonts/#font-feature-values) rule.
+ */
+export interface FontFeatureValuesRule {
+ /**
+ * The location of the rule in the source file.
+ */
+ loc: Location2;
+ /**
+ * The name of the font feature values.
+ */
+ name: String[];
+ /**
+ * The rules within the `@font-feature-values` rule.
+ */
+ rules: {
+ [k: string]: FontFeatureSubrule;
+ };
+}
+/**
+ * A sub-rule of `@font-feature-values` https://drafts.csswg.org/css-fonts/#font-feature-values-syntax
+ */
+export interface FontFeatureSubrule {
+ /**
+ * The declarations within the `@font-feature-values` sub-rules.
+ */
+ declarations: {
+ [k: string]: number[];
+ };
+ /**
+ * The location of the rule in the source file.
+ */
+ loc: Location2;
+ /**
+ * The name of the `@font-feature-values` sub-rule.
+ */
+ name: FontFeatureSubruleType;
+}
/**
* A [@page](https://www.w3.org/TR/css-page-3/#at-page-rule) rule.
*/
diff --git a/src/lib.rs b/src/lib.rs
index 54c2587d..54e7260a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -13648,6 +13648,125 @@ mod tests {
minify_test(".foo { font-palette: --Custom; }", ".foo{font-palette:--Custom}");
}
+ #[test]
+ fn test_font_feature_values() {
+ // https://github.com/clagnut/TODS/blob/e693d52ad411507b960cf01a9734265e3efab102/tods.css#L116-L142
+ minify_test(
+ r#"
+@font-feature-values "Fancy Font Name" {
+ @styleset { cursive: 1; swoopy: 7 16; }
+ @character-variant { ampersand: 1; capital-q: 2; }
+ @stylistic { two-story-g: 1; straight-y: 2; }
+ @swash { swishy: 1; flowing: 2; }
+ @ornaments { clover: 1; fleuron: 2; }
+ @annotation { circled: 1; boxed: 2; }
+}
+ "#,
+ r#"@font-feature-values Fancy Font Name{@styleset{cursive:1;swoopy:7 16}@character-variant{ampersand:1;capital-q:2}@stylistic{two-story-g:1;straight-y:2}@swash{swishy:1;flowing:2}@ornaments{clover:1;fleuron:2}@annotation{circled:1;boxed:2}}"#,
+ );
+
+ // https://github.com/Sorixelle/srxl.me/blob/4eb4f4a15cb2d21356df24c096d6a819cfdc1a99/public/fonts/inter/inter.css#L201-L222
+ minify_test(
+ r#"
+@font-feature-values "Inter", "Inter var", "Inter var experimental" {
+ @styleset {
+ open-digits: 1;
+ disambiguation: 2;
+ curved-r: 3;
+ disambiguation-without-zero: 4;
+ }
+
+ @character-variant {
+ alt-one: 1;
+ open-four: 2;
+ open-six: 3;
+ open-nine: 4;
+ lower-l-with-tail: 5;
+ curved-lower-r: 6;
+ german-double-s: 7;
+ upper-i-with-serif: 8;
+ flat-top-three: 9;
+ upper-g-with-spur: 10;
+ single-storey-a: 11;
+ }
+}
+ "#,
+ r#"@font-feature-values Inter,Inter var,Inter var experimental{@styleset{open-digits:1;disambiguation:2;curved-r:3;disambiguation-without-zero:4}@character-variant{alt-one:1;open-four:2;open-six:3;open-nine:4;lower-l-with-tail:5;curved-lower-r:6;german-double-s:7;upper-i-with-serif:8;flat-top-three:9;upper-g-with-spur:10;single-storey-a:11}}"#,
+ );
+
+ // https://github.com/MihailJP/Inconsolata-LGC/blob/7c53cf455787096c93d82d9a51018f12ec39a6e9/Inconsolata-LGC.css#L65-L91
+ minify_test(
+ r#"
+@font-feature-values "Inconsolata LGC" {
+ @styleset {
+ alternative-umlaut: 1;
+ }
+ @character-variant {
+ zero-plain: 1 1;
+ zero-dotted: 1 2;
+ zero-longslash: 1 3;
+ r-with-serif: 2 1;
+ eng-descender: 3 1;
+ eng-uppercase: 3 2;
+ dollar-open: 4 1;
+ dollar-oldstyle: 4 2;
+ dollar-cifrao: 4 2;
+ ezh-no-descender: 5 1;
+ ezh-reversed-sigma: 5 2;
+ triangle-text-form: 6 1;
+ el-with-hook-old: 7 1;
+ qa-enlarged-lowercase: 8 1;
+ qa-reversed-p: 8 2;
+ che-with-hook: 9 1;
+ che-with-hook-alt: 9 2;
+ ge-with-hook: 10 1;
+ ge-with-hook-alt: 10 2;
+ ge-with-stroke-and-descender: 11 1;
+ }
+}
+ "#,
+ r#"@font-feature-values Inconsolata LGC{@styleset{alternative-umlaut:1}@character-variant{zero-plain:1 1;zero-dotted:1 2;zero-longslash:1 3;r-with-serif:2 1;eng-descender:3 1;eng-uppercase:3 2;dollar-open:4 1;dollar-oldstyle:4 2;dollar-cifrao:4 2;ezh-no-descender:5 1;ezh-reversed-sigma:5 2;triangle-text-form:6 1;el-with-hook-old:7 1;qa-enlarged-lowercase:8 1;qa-reversed-p:8 2;che-with-hook:9 1;che-with-hook-alt:9 2;ge-with-hook:10 1;ge-with-hook-alt:10 2;ge-with-stroke-and-descender:11 1}}"#,
+ );
+
+ minify_test(
+ r#"
+ @font-feature-values "Fancy Font Name" {
+ @styleset { cursive: 1; swoopy: 7 16; }
+ @character-variant { ampersand: 1; capital-q: 2; }
+ }
+ "#,
+ r#"@font-feature-values Fancy Font Name{@styleset{cursive:1;swoopy:7 16}@character-variant{ampersand:1;capital-q:2}}"#,
+ );
+ minify_test(
+ r#"
+ @font-feature-values foo {
+ @swash { pretty: 0; pretty: 1; cool: 2; }
+ }
+ "#,
+ "@font-feature-values foo{@swash{pretty:1;cool:2}}",
+ );
+ minify_test(
+ r#"
+ @font-feature-values foo {
+ @swash { pretty: 1; }
+ @swash { cool: 2; }
+ }
+ "#,
+ "@font-feature-values foo{@swash{pretty:1;cool:2}}",
+ );
+ minify_test(
+ r#"
+ @font-feature-values foo {
+ @swash { pretty: 1; }
+ }
+ @font-feature-values foo {
+ @swash { cool: 2; }
+ }
+ "#,
+ "@font-feature-values foo{@swash{pretty:1;cool:2}}",
+ );
+ }
+
#[test]
fn test_page_rule() {
minify_test("@page {margin: 0.5cm}", "@page{margin:.5cm}");
diff --git a/src/parser.rs b/src/parser.rs
index a40ee5b1..3e37e518 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -4,6 +4,7 @@ use crate::media_query::*;
use crate::printer::Printer;
use crate::properties::custom::TokenList;
use crate::rules::container::{ContainerCondition, ContainerName, ContainerRule};
+use crate::rules::font_feature_values::FontFeatureValuesRule;
use crate::rules::font_palette_values::FontPaletteValuesRule;
use crate::rules::layer::{LayerBlockRule, LayerStatementRule};
use crate::rules::property::PropertyRule;
@@ -12,6 +13,7 @@ use crate::rules::starting_style::StartingStyleRule;
use crate::rules::view_transition::ViewTransitionRule;
use crate::rules::viewport::ViewportRule;
+use crate::properties::font::FamilyName;
use crate::rules::{
counter_style::CounterStyleRule,
custom_media::CustomMediaRule,
@@ -173,7 +175,7 @@ pub enum AtRulePrelude<'i, T> {
/// A @font-face rule prelude.
FontFace,
/// A @font-feature-values rule prelude, with its FamilyName list.
- FontFeatureValues, //(Vec),
+ FontFeatureValues(Vec<'i>>),
/// A @font-palette-values rule prelude, with its name.
FontPaletteValues(DashedIdent<'i>),
/// A @counter-style rule prelude, with its counter style name.
@@ -243,7 +245,7 @@ impl<'i, T> AtRulePrelude<'i, T> {
Self::Namespace(..)
| Self::FontFace
- | Self::FontFeatureValues
+ | Self::FontFeatureValues(..)
| Self::FontPaletteValues(..)
| Self::CounterStyle(..)
| Self::Keyframes(..)
@@ -574,6 +576,14 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
// let family_names = parse_family_name_list(self.context, input)?;
// Ok(AtRuleType::WithBlock(AtRuleBlockPrelude::FontFeatureValues(family_names)))
// },
+ "font-feature-values" => {
+ let names = match Vec::::parse(input) {
+ Ok(names) => names,
+ Err(e) => return Err(e)
+ };
+
+ AtRulePrelude::FontFeatureValues(names)
+ },
"font-palette-values" => {
let name = DashedIdent::parse(input)?;
AtRulePrelude::FontPaletteValues(name)
@@ -701,6 +711,45 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
Ok(result)
}
+ #[inline]
+ fn rule_without_block(
+ &mut self,
+ prelude: AtRulePrelude<'i, T::Prelude>,
+ start: &ParserState,
+ ) -> Result {
+ let loc = self.loc(start);
+ match prelude {
+ AtRulePrelude::Layer(names) => {
+ if self.is_in_style_rule || names.is_empty() {
+ return Err(());
+ }
+
+ self.rules.0.push(CssRule::LayerStatement(LayerStatementRule { names, loc }));
+ Ok(())
+ }
+ AtRulePrelude::Unknown(name, prelude) => {
+ self.rules.0.push(CssRule::Unknown(UnknownAtRule {
+ name,
+ prelude,
+ block: None,
+ loc,
+ }));
+ Ok(())
+ }
+ AtRulePrelude::Custom(prelude) => {
+ self.rules.0.push(parse_custom_at_rule_without_block(
+ prelude,
+ start,
+ self.options,
+ self.at_rule_parser,
+ self.is_in_style_rule,
+ )?);
+ Ok(())
+ }
+ _ => Err(()),
+ }
+ }
+
fn parse_block<'t>(
&mut self,
prelude: Self::Prelude,
@@ -861,7 +910,11 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
}));
Ok(())
}
- AtRulePrelude::FontFeatureValues => unreachable!(),
+ AtRulePrelude::FontFeatureValues(family_names) => {
+ let rule = FontFeatureValuesRule::parse(family_names, input, loc, self.options)?;
+ self.rules.0.push(CssRule::FontFeatureValues(rule));
+ Ok(())
+ }
AtRulePrelude::Unknown(name, prelude) => {
self.rules.0.push(CssRule::Unknown(UnknownAtRule {
name,
@@ -884,45 +937,6 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> AtRuleParser<'i> for Ne
}
}
}
-
- #[inline]
- fn rule_without_block(
- &mut self,
- prelude: AtRulePrelude<'i, T::Prelude>,
- start: &ParserState,
- ) -> Result {
- let loc = self.loc(start);
- match prelude {
- AtRulePrelude::Layer(names) => {
- if self.is_in_style_rule || names.is_empty() {
- return Err(());
- }
-
- self.rules.0.push(CssRule::LayerStatement(LayerStatementRule { names, loc }));
- Ok(())
- }
- AtRulePrelude::Unknown(name, prelude) => {
- self.rules.0.push(CssRule::Unknown(UnknownAtRule {
- name,
- prelude,
- block: None,
- loc,
- }));
- Ok(())
- }
- AtRulePrelude::Custom(prelude) => {
- self.rules.0.push(parse_custom_at_rule_without_block(
- prelude,
- start,
- self.options,
- self.at_rule_parser,
- self.is_in_style_rule,
- )?);
- Ok(())
- }
- _ => Err(()),
- }
- }
}
impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> QualifiedRuleParser<'i>
diff --git a/src/properties/font.rs b/src/properties/font.rs
index 377ea77c..55581d88 100644
--- a/src/properties/font.rs
+++ b/src/properties/font.rs
@@ -348,19 +348,46 @@ pub enum FontFamily<'i> {
Generic(GenericFontFamily),
/// A custom family name.
#[cfg_attr(feature = "serde", serde(borrow))]
- FamilyName(CowArcStr<'i>),
+ FamilyName(FamilyName<'i>),
}
impl<'i> Parse<'i> for FontFamily<'i> {
fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
- if let Ok(value) = input.try_parse(|i| i.expect_string_cloned()) {
- return Ok(FontFamily::FamilyName(value.into()));
- }
-
if let Ok(value) = input.try_parse(GenericFontFamily::parse) {
return Ok(FontFamily::Generic(value));
}
+ let family = FamilyName::parse(input)?;
+ Ok(FontFamily::FamilyName(family))
+ }
+}
+
+impl<'i> ToCss for FontFamily<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ match self {
+ FontFamily::Generic(val) => val.to_css(dest),
+ FontFamily::FamilyName(val) => val.to_css(dest),
+ }
+ }
+}
+
+/// A font [family name](https://drafts.csswg.org/css-fonts/#family-name-syntax).
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize), serde(transparent))]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub struct FamilyName<'i>(#[cfg_attr(feature = "serde", serde(borrow))] CowArcStr<'i>);
+
+impl<'i> Parse<'i> for FamilyName<'i> {
+ fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+ if let Ok(value) = input.try_parse(|i| i.expect_string_cloned()) {
+ return Ok(FamilyName(value.into()));
+ }
+
let value: CowArcStr<'i> = input.expect_ident()?.into();
let mut string = None;
while let Ok(ident) = input.try_parse(|i| i.expect_ident_cloned()) {
@@ -380,40 +407,36 @@ impl<'i> Parse<'i> for FontFamily<'i> {
value
};
- Ok(FontFamily::FamilyName(value))
+ Ok(FamilyName(value))
}
}
-impl<'i> ToCss for FontFamily<'i> {
+impl<'i> ToCss for FamilyName<'i> {
fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
where
W: std::fmt::Write,
{
- match self {
- FontFamily::Generic(val) => val.to_css(dest),
- FontFamily::FamilyName(val) => {
- // Generic family names such as sans-serif must be quoted if parsed as a string.
- // CSS wide keywords, as well as "default", must also be quoted.
- // https://www.w3.org/TR/css-fonts-4/#family-name-syntax
- if !val.is_empty() && !GenericFontFamily::parse_string(val).is_ok() {
- let mut id = String::new();
- let mut first = true;
- for slice in val.split(' ') {
- if first {
- first = false;
- } else {
- id.push(' ');
- }
- serialize_identifier(slice, &mut id)?;
- }
- if id.len() < val.len() + 2 {
- return dest.write_str(&id);
- }
+ // Generic family names such as sans-serif must be quoted if parsed as a string.
+ // CSS wide keywords, as well as "default", must also be quoted.
+ // https://www.w3.org/TR/css-fonts-4/#family-name-syntax
+ let val = &self.0;
+ if !val.is_empty() && !GenericFontFamily::parse_string(val).is_ok() {
+ let mut id = String::new();
+ let mut first = true;
+ for slice in val.split(' ') {
+ if first {
+ first = false;
+ } else {
+ id.push(' ');
}
- serialize_string(&val, dest)?;
- Ok(())
+ serialize_identifier(slice, &mut id)?;
+ }
+ if id.len() < val.len() + 2 {
+ return dest.write_str(&id);
}
}
+ serialize_string(&val, dest)?;
+ Ok(())
}
}
@@ -994,7 +1017,7 @@ fn compatible_font_family(mut family: Option>, is_supported: boo
(position + 1)..(position + 1),
DEFAULT_SYSTEM_FONTS
.iter()
- .map(|name| FontFamily::FamilyName(CowArcStr::from(*name))),
+ .map(|name| FontFamily::FamilyName(FamilyName(CowArcStr::from(*name)))),
);
}
}
diff --git a/src/rules/font_feature_values.rs b/src/rules/font_feature_values.rs
new file mode 100644
index 00000000..9aeedbf1
--- /dev/null
+++ b/src/rules/font_feature_values.rs
@@ -0,0 +1,331 @@
+//! The `@font-feature-values` rule.
+
+use super::Location;
+use crate::error::{ParserError, PrinterError};
+use crate::parser::ParserOptions;
+use crate::printer::Printer;
+use crate::properties::font::FamilyName;
+use crate::traits::{Parse, ToCss};
+use crate::values::ident::Ident;
+use crate::values::number::CSSInteger;
+#[cfg(feature = "visitor")]
+use crate::visitor::Visit;
+use cssparser::*;
+use indexmap::IndexMap;
+use smallvec::SmallVec;
+use std::fmt::Write;
+
+/// A [@font-feature-values](https://drafts.csswg.org/css-fonts/#font-feature-values) rule.
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub struct FontFeatureValuesRule<'i> {
+ /// The name of the font feature values.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub name: Vec<'i>>,
+ /// The rules within the `@font-feature-values` rule.
+ pub rules: IndexMap<'i>>,
+ /// The location of the rule in the source file.
+ #[cfg_attr(feature = "visitor", skip_visit)]
+ pub loc: Location,
+}
+
+impl<'i> FontFeatureValuesRule<'i> {
+ pub(crate) fn parse<'t, 'o>(
+ family_names: Vec<'i>>,
+ input: &mut Parser<'i, 't>,
+ loc: Location,
+ options: &ParserOptions<'o, 'i>,
+ ) -> Result<'i, ParserError<'i>>> {
+ let mut rules = IndexMap::new();
+ let mut rule_parser = FontFeatureValuesRuleParser {
+ rules: &mut rules,
+ options,
+ };
+ let mut parser = RuleBodyParser::new(input, &mut rule_parser);
+
+ while let Some(decl_or_rule) = parser.next() {
+ if let Err((err, _)) = decl_or_rule {
+ if parser.parser.options.error_recovery {
+ parser.parser.options.warn(err);
+ continue;
+ }
+ return Err(err);
+ }
+ }
+
+ Ok(FontFeatureValuesRule {
+ name: family_names,
+ rules,
+ loc,
+ })
+ }
+}
+
+struct FontFeatureValuesRuleParser<'a, 'o, 'i> {
+ rules: &'a mut IndexMap<'i>>,
+ options: &'a ParserOptions<'o, 'i>,
+}
+
+impl<'a, 'o, 'i> cssparser::DeclarationParser<'i> for FontFeatureValuesRuleParser<'a, 'o, 'i> {
+ type Declaration = ();
+ type Error = ParserError<'i>;
+}
+
+impl<'a, 'o, 'i> cssparser::AtRuleParser<'i> for FontFeatureValuesRuleParser<'a, 'o, 'i> {
+ type Prelude = FontFeatureSubruleType;
+ type AtRule = ();
+ type Error = ParserError<'i>;
+
+ fn parse_prelude<'t>(
+ &mut self,
+ name: CowRcStr<'i>,
+ input: &mut Parser<'i, 't>,
+ ) -> Result<'i, Self::Error>> {
+ let loc = input.current_source_location();
+ FontFeatureSubruleType::parse_string(&name)
+ .map_err(|_| loc.new_custom_error(ParserError::AtRuleInvalid(name.clone().into())))
+ }
+
+ fn parse_block<'t>(
+ &mut self,
+ prelude: Self::Prelude,
+ start: &ParserState,
+ input: &mut Parser<'i, 't>,
+ ) -> Result<'i, Self::Error>> {
+ let loc = start.source_location();
+ let mut decls = IndexMap::new();
+ let mut has_existing = false;
+ let declarations = if let Some(rule) = self.rules.get_mut(&prelude) {
+ has_existing = true;
+ &mut rule.declarations
+ } else {
+ &mut decls
+ };
+ let mut decl_parser = FontFeatureDeclarationParser { declarations };
+ let mut parser = RuleBodyParser::new(input, &mut decl_parser);
+ while let Some(decl) = parser.next() {
+ if let Err((err, _)) = decl {
+ if self.options.error_recovery {
+ self.options.warn(err);
+ continue;
+ }
+ return Err(err);
+ }
+ }
+
+ if !has_existing {
+ self.rules.insert(
+ prelude,
+ FontFeatureSubrule {
+ name: prelude,
+ declarations: decls,
+ loc: Location {
+ source_index: self.options.source_index,
+ line: loc.line,
+ column: loc.column,
+ },
+ },
+ );
+ }
+
+ Ok(())
+ }
+}
+
+impl<'a, 'o, 'i> QualifiedRuleParser<'i> for FontFeatureValuesRuleParser<'a, 'o, 'i> {
+ type Prelude = ();
+ type QualifiedRule = ();
+ type Error = ParserError<'i>;
+}
+
+impl<'a, 'o, 'i> RuleBodyItemParser<'i, (), ParserError<'i>> for FontFeatureValuesRuleParser<'a, 'o, 'i> {
+ fn parse_declarations(&self) -> bool {
+ false
+ }
+
+ fn parse_qualified(&self) -> bool {
+ false
+ }
+}
+
+impl<'i> ToCss for FontFeatureValuesRule<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ #[cfg(feature = "sourcemap")]
+ dest.add_mapping(self.loc);
+ dest.write_str("@font-feature-values ")?;
+ self.name.to_css(dest)?;
+ dest.whitespace()?;
+ dest.write_char('{')?;
+ if !self.rules.is_empty() {
+ dest.newline()?;
+ for rule in self.rules.values() {
+ rule.to_css(dest)?;
+ dest.newline()?;
+ }
+ }
+ dest.write_char('}')
+ }
+}
+
+impl<'i> FontFeatureValuesRule<'i> {
+ pub(crate) fn merge(&mut self, other: &FontFeatureValuesRule<'i>) {
+ debug_assert_eq!(self.name, other.name);
+ for (prelude, rule) in &other.rules {
+ if let Some(existing) = self.rules.get_mut(prelude) {
+ existing
+ .declarations
+ .extend(rule.declarations.iter().map(|(k, v)| (k.clone(), v.clone())));
+ } else {
+ self.rules.insert(*prelude, rule.clone());
+ }
+ }
+ }
+}
+
+/// The name of the `@font-feature-values` sub-rule.
+/// font-feature-value-type = <@stylistic> | <@historical-forms> | <@styleset> | <@character-variant>
+/// | <@swash> | <@ornaments> | <@annotation>
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Parse, ToCss)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "kebab-case")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub enum FontFeatureSubruleType {
+ /// @stylistic = @stylistic { }
+ Stylistic,
+ /// @historical-forms = @historical-forms { }
+ HistoricalForms,
+ /// @styleset = @styleset { }
+ Styleset,
+ /// @character-variant = @character-variant { }
+ CharacterVariant,
+ /// @swash = @swash { }
+ Swash,
+ /// @ornaments = @ornaments { }
+ Ornaments,
+ /// @annotation = @annotation { }
+ Annotation,
+}
+
+/// A sub-rule of `@font-feature-values`
+/// https://drafts.csswg.org/css-fonts/#font-feature-values-syntax
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Serialize, serde::Deserialize),
+ serde(rename_all = "camelCase")
+)]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+pub struct FontFeatureSubrule<'i> {
+ /// The name of the `@font-feature-values` sub-rule.
+ pub name: FontFeatureSubruleType,
+ /// The declarations within the `@font-feature-values` sub-rules.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub declarations: IndexMap<'i>, SmallVec<[CSSInteger; 1]>>,
+ /// The location of the rule in the source file.
+ #[cfg_attr(feature = "visitor", skip_visit)]
+ pub loc: Location,
+}
+
+impl<'i> ToCss for FontFeatureSubrule<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: Write,
+ {
+ #[cfg(feature = "sourcemap")]
+ dest.add_mapping(self.loc);
+ dest.write_char('@')?;
+ self.name.to_css(dest)?;
+ dest.write_char('{')?;
+ dest.indent();
+ let len = self.declarations.len();
+ for (i, (name, value)) in self.declarations.iter().enumerate() {
+ dest.newline()?;
+ name.to_css(dest)?;
+ dest.delim(':', false)?;
+
+ let mut first = true;
+ for index in value {
+ if first {
+ first = false;
+ } else {
+ dest.write_char(' ')?;
+ }
+ index.to_css(dest)?;
+ }
+
+ if i != len - 1 || !dest.minify {
+ dest.write_char(';')?;
+ }
+ }
+ dest.dedent();
+ dest.newline()?;
+ dest.write_char('}')
+ }
+}
+
+struct FontFeatureDeclarationParser<'a, 'i> {
+ declarations: &'a mut IndexMap<'i>, SmallVec<[CSSInteger; 1]>>,
+}
+
+impl<'a, 'i> cssparser::DeclarationParser<'i> for FontFeatureDeclarationParser<'a, 'i> {
+ type Declaration = ();
+ type Error = ParserError<'i>;
+
+ fn parse_value<'t>(
+ &mut self,
+ name: CowRcStr<'i>,
+ input: &mut cssparser::Parser<'i, 't>,
+ ) -> Result<'i, Self::Error>> {
+ let mut indices = SmallVec::new();
+ loop {
+ if let Ok(value) = CSSInteger::parse(input) {
+ indices.push(value);
+ } else {
+ break;
+ }
+ }
+
+ if indices.is_empty() {
+ return Err(input.new_custom_error(ParserError::InvalidValue));
+ }
+
+ self.declarations.insert(Ident(name.into()), indices);
+ Ok(())
+ }
+}
+
+/// Default methods reject all at rules.
+impl<'a, 'i> AtRuleParser<'i> for FontFeatureDeclarationParser<'a, 'i> {
+ type Prelude = ();
+ type AtRule = ();
+ type Error = ParserError<'i>;
+}
+
+impl<'a, 'i> QualifiedRuleParser<'i> for FontFeatureDeclarationParser<'a, 'i> {
+ type Prelude = ();
+ type QualifiedRule = ();
+ type Error = ParserError<'i>;
+}
+
+impl<'a, 'i> RuleBodyItemParser<'i, (), ParserError<'i>> for FontFeatureDeclarationParser<'a, 'i> {
+ fn parse_qualified(&self) -> bool {
+ false
+ }
+
+ fn parse_declarations(&self) -> bool {
+ true
+ }
+}
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 8d986f4e..4909961a 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -41,6 +41,7 @@ pub mod counter_style;
pub mod custom_media;
pub mod document;
pub mod font_face;
+pub mod font_feature_values;
pub mod font_palette_values;
pub mod import;
pub mod keyframes;
@@ -58,6 +59,7 @@ pub mod unknown;
pub mod view_transition;
pub mod viewport;
+use self::font_feature_values::FontFeatureValuesRule;
use self::font_palette_values::FontPaletteValuesRule;
use self::layer::{LayerBlockRule, LayerStatementRule};
use self::property::PropertyRule;
@@ -148,6 +150,8 @@ pub enum CssRule<'i, R = DefaultAtRule> {
FontFace(FontFaceRule<'i>),
/// A `@font-palette-values` rule.
FontPaletteValues(FontPaletteValuesRule<'i>),
+ /// A `@font-feature-values` rule.
+ FontFeatureValues(FontFeatureValuesRule<'i>),
/// A `@page` rule.
Page(PageRule<'i>),
/// A `@supports` rule.
@@ -266,6 +270,10 @@ impl<'i, 'de: 'i, R: serde::Deserialize<'de>> serde::Deserialize<'de> for CssRul
let rule = FontPaletteValuesRule::deserialize(deserializer)?;
Ok(CssRule::FontPaletteValues(rule))
}
+ "font-feature-values" => {
+ let rule = FontFeatureValuesRule::deserialize(deserializer)?;
+ Ok(CssRule::FontFeatureValues(rule))
+ }
"page" => {
let rule = PageRule::deserialize(deserializer)?;
Ok(CssRule::Page(rule))
@@ -352,6 +360,7 @@ impl<'a, 'i, T: ToCss> ToCss for CssRule<'i, T> {
CssRule::Keyframes(keyframes) => keyframes.to_css(dest),
CssRule::FontFace(font_face) => font_face.to_css(dest),
CssRule::FontPaletteValues(f) => f.to_css(dest),
+ CssRule::FontFeatureValues(font_feature_values) => font_feature_values.to_css(dest),
CssRule::Page(font_face) => font_face.to_css(dest),
CssRule::Supports(supports) => supports.to_css(dest),
CssRule::CounterStyle(counter_style) => counter_style.to_css(dest),
@@ -509,6 +518,7 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
let mut keyframe_rules = HashMap::new();
let mut layer_rules = HashMap::new();
let mut property_rules = HashMap::new();
+ let mut font_feature_values_rules = Vec::new();
let mut style_rules =
HashMap::with_capacity_and_hasher(self.0.len(), BuildHasherDefault::::default());
let mut rules = Vec::new();
@@ -822,12 +832,25 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
rules.extend(fallbacks);
continue;
}
+ CssRule::FontFeatureValues(rule) => {
+ if let Some(index) = font_feature_values_rules
+ .iter()
+ .find(|index| matches!(&rules[**index], CssRule::FontFeatureValues(r) if r.name == rule.name))
+ {
+ if let CssRule::FontFeatureValues(existing) = &mut rules[*index] {
+ existing.merge(rule);
+ }
+ continue;
+ } else {
+ font_feature_values_rules.push(rules.len());
+ }
+ }
CssRule::Property(property) => {
if context.unused_symbols.contains(property.name.0.as_ref()) {
continue;
}
- if let Some(index) = property_rules.get_mut(&property.name) {
+ if let Some(index) = property_rules.get(&property.name) {
rules[*index] = rule;
continue;
} else {
diff --git a/src/visitor.rs b/src/visitor.rs
index 92bbccb7..beb04d2e 100644
--- a/src/visitor.rs
+++ b/src/visitor.rs
@@ -82,6 +82,7 @@ use crate::{
},
};
use bitflags::bitflags;
+use indexmap::IndexMap;
use smallvec::SmallVec;
pub(crate) use lightningcss_derive::Visit;
@@ -389,6 +390,23 @@ impl<'i, A: smallvec::Array- , U: Visit<'i, T, V>, T: Visit<'i, T, V>, V
}
}
+impl<'i, T, V, U, W> Visit<'i, T, V> for IndexMap
+where
+ T: Visit<'i, T, V>,
+ V: ?Sized + Visitor<'i, T>,
+ W: Visit<'i, T, V>,
+{
+ const CHILD_TYPES: VisitTypes = W::CHILD_TYPES;
+
+ fn visit(&mut self, visitor: &mut V) -> Result<(), V::Error> {
+ self.iter_mut().try_for_each(|(_k, v)| v.visit(visitor))
+ }
+
+ fn visit_children(&mut self, visitor: &mut V) -> Result<(), V::Error> {
+ self.iter_mut().try_for_each(|(_k, v)| v.visit_children(visitor))
+ }
+}
+
macro_rules! impl_visit {
($t: ty) => {
impl<'i, V: ?Sized + Visitor<'i, T>, T: Visit<'i, T, V>> Visit<'i, T, V> for $t {
diff --git a/static-self/Cargo.toml b/static-self/Cargo.toml
index 8fdcd0ad..fa06f309 100644
--- a/static-self/Cargo.toml
+++ b/static-self/Cargo.toml
@@ -13,3 +13,4 @@ repository = "https://github.com/parcel-bundler/lightningcss"
[dependencies]
smallvec = { version = "1.11.1", optional = true }
static-self-derive = { version = "0.1.1", path = "../static-self-derive" }
+indexmap = { version = "2.2.6", optional = true }
diff --git a/static-self/src/lib.rs b/static-self/src/lib.rs
index c18e9d55..03fb6067 100644
--- a/static-self/src/lib.rs
+++ b/static-self/src/lib.rs
@@ -122,6 +122,20 @@ where
}
}
+#[cfg(feature = "indexmap")]
+impl<'any, K, V> IntoOwned<'any> for indexmap::IndexMap
+where
+ K: IntoOwned<'any>,
+ V: IntoOwned<'any>,
+ <'any>>::Owned: Eq + std::hash::Hash,
+{
+ type Owned = indexmap::IndexMap<<'any>>::Owned, <'any>>::Owned>;
+
+ fn into_owned(self) -> Self::Owned {
+ self.into_iter().map(|(k, v)| (k.into_owned(), v.into_owned())).collect()
+ }
+}
+
impl<'any, T, const N: usize> IntoOwned<'any> for [T; N]
where
T: IntoOwned<'any>,
From ed9e659ea0d298a836a7cbe1c4f77c69531ee5c8 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Wed, 1 Jan 2025 11:51:44 -0500
Subject: [PATCH 052/137] Fix nth of selectors in css modules
Fixes #883
---
selectors/parser.rs | 4 ++--
src/lib.rs | 21 +++++++++++++++++++++
src/selector.rs | 8 ++++++++
3 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/selectors/parser.rs b/selectors/parser.rs
index 5f32ff79..d3e18f74 100644
--- a/selectors/parser.rs
+++ b/selectors/parser.rs
@@ -1302,7 +1302,7 @@ impl NthSelectorData {
/// Writes the beginning of the selector.
#[inline]
- fn write_start(&self, dest: &mut W, is_function: bool) -> fmt::Result {
+ pub fn write_start(&self, dest: &mut W, is_function: bool) -> fmt::Result {
dest.write_str(match self.ty {
NthType::Child if is_function => ":nth-child(",
NthType::Child => ":first-child",
@@ -1322,7 +1322,7 @@ impl NthSelectorData {
/// Serialize (part of the CSS Syntax spec, but currently only used here).
///
#[inline]
- fn write_affine(&self, dest: &mut W) -> fmt::Result {
+ pub fn write_affine(&self, dest: &mut W) -> fmt::Result {
match (self.a, self.b) {
(0, 0) => dest.write_char('0'),
diff --git a/src/lib.rs b/src/lib.rs
index 54e7260a..46ce5e39 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -24993,6 +24993,27 @@ mod tests {
Default::default(),
true,
);
+
+ css_modules_test(
+ ":nth-child(1 of .foo) {width: 20px}",
+ ":nth-child(1 of .EgL3uq_foo){width:20px}",
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
+ css_modules_test(
+ ":nth-last-child(1 of .foo) {width: 20px}",
+ ":nth-last-child(1 of .EgL3uq_foo){width:20px}",
+ map! {
+ "foo" => "EgL3uq_foo"
+ },
+ HashMap::new(),
+ Default::default(),
+ true,
+ );
}
// Stable hashes between project roots.
diff --git a/src/selector.rs b/src/selector.rs
index 86507b58..e624b199 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -1622,6 +1622,14 @@ where
selector.to_css(dest)?;
dest.write_char(')')
}
+ Component::NthOf(ref nth_of_data) => {
+ let nth_data = nth_of_data.nth_data();
+ nth_data.write_start(dest, true)?;
+ nth_data.write_affine(dest)?;
+ dest.write_str(" of ")?;
+ serialize_selector_list(nth_of_data.selectors().iter(), dest, context, true)?;
+ dest.write_char(')')
+ }
_ => {
cssparser::ToCss::to_css(component, dest)?;
Ok(())
From 99f161a9020b7fbfd5c2b98330309e5788a3977b Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Wed, 8 Jan 2025 23:47:14 -0500
Subject: [PATCH 053/137] v1.29.0
---
Cargo.lock | 8 ++++----
Cargo.toml | 6 +++---
napi/Cargo.toml | 4 ++--
node/Cargo.toml | 2 +-
package.json | 2 +-
selectors/Cargo.toml | 4 ++--
static-self/Cargo.toml | 2 +-
7 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 65ddfd42..eae59587 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -730,7 +730,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.61"
+version = "1.0.0-alpha.62"
dependencies = [
"ahash 0.8.11",
"assert_cmd",
@@ -777,7 +777,7 @@ dependencies = [
[[package]]
name = "lightningcss-napi"
-version = "0.4.1"
+version = "0.4.2"
dependencies = [
"crossbeam-channel",
"cssparser",
@@ -956,7 +956,7 @@ checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4"
[[package]]
name = "parcel_selectors"
-version = "0.28.0"
+version = "0.28.1"
dependencies = [
"bitflags 2.6.0",
"cssparser",
@@ -1476,7 +1476,7 @@ dependencies = [
[[package]]
name = "static-self"
-version = "0.1.1"
+version = "0.1.2"
dependencies = [
"indexmap 2.7.0",
"smallvec",
diff --git a/Cargo.toml b/Cargo.toml
index 430e37dc..2152859e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.61"
+version = "1.0.0-alpha.62"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
@@ -62,7 +62,7 @@ substitute_variables = ["visitor", "into_owned"]
serde = { version = "1.0.201", features = ["derive"], optional = true }
cssparser = "0.33.0"
cssparser-color = "0.1.0"
-parcel_selectors = { version = "0.28.0", path = "./selectors" }
+parcel_selectors = { version = "0.28.1", path = "./selectors" }
itertools = "0.10.1"
smallvec = { version = "1.7.0", features = ["union"] }
bitflags = "2.2.1"
@@ -83,7 +83,7 @@ dashmap = { version = "5.0.0", optional = true }
serde_json = { version = "1.0.78", optional = true }
lightningcss-derive = { version = "=1.0.0-alpha.43", path = "./derive" }
schemars = { version = "0.8.19", features = ["smallvec", "indexmap2"], optional = true }
-static-self = { version = "0.1.0", path = "static-self", optional = true }
+static-self = { version = "0.1.2", path = "static-self", optional = true }
[target.'cfg(target_os = "macos")'.dependencies]
jemallocator = { version = "0.3.2", features = [
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index e3ec7375..fdca5a68 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -1,7 +1,7 @@
[package]
authors = ["Devon Govett "]
name = "lightningcss-napi"
-version = "0.4.1"
+version = "0.4.2"
description = "Node-API bindings for Lightning CSS"
license = "MPL-2.0"
repository = "https://github.com/parcel-bundler/lightningcss"
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.61", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.62", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/node/Cargo.toml b/node/Cargo.toml
index 5b54465a..55aa66b8 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -9,7 +9,7 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
-lightningcss-napi = { version = "0.4.1", path = "../napi", features = [
+lightningcss-napi = { version = "0.4.2", path = "../napi", features = [
"bundler",
"visitor",
] }
diff --git a/package.json b/package.json
index a2897fce..bb7eff5f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.28.2",
+ "version": "1.29.0",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
diff --git a/selectors/Cargo.toml b/selectors/Cargo.toml
index 90a2aab3..2253b797 100644
--- a/selectors/Cargo.toml
+++ b/selectors/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "parcel_selectors"
-version = "0.28.0"
+version = "0.28.1"
authors = ["The Servo Project Developers"]
documentation = "https://docs.rs/parcel_selectors/"
description = "CSS Selectors matching for Rust - forked for lightningcss"
@@ -32,7 +32,7 @@ precomputed-hash = "0.1"
smallvec = "1.0"
serde = { version = "1.0.201", features = ["derive"], optional = true }
schemars = { version = "0.8.19", features = ["smallvec"], optional = true }
-static-self = { version = "0.1.0", path = "../static-self", optional = true }
+static-self = { version = "0.1.2", path = "../static-self", optional = true }
[build-dependencies]
phf_codegen = "0.11"
diff --git a/static-self/Cargo.toml b/static-self/Cargo.toml
index fa06f309..c2c62bb9 100644
--- a/static-self/Cargo.toml
+++ b/static-self/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "static-self"
-version = "0.1.1"
+version = "0.1.2"
edition = "2021"
authors = ["Devon Govett ","Donny "]
description = "A trait for values that can be cloned with a static lifetime"
From 8b49805d87cf6fc68ffe7d383002b66d293e3a01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BF=A0=20/=20green?=
Date: Thu, 9 Jan 2025 14:12:21 +0900
Subject: [PATCH 054/137] Fix CustomAtRule.loc type (#876)
---
node/index.d.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/node/index.d.ts b/node/index.d.ts
index a583397d..76d40572 100644
--- a/node/index.d.ts
+++ b/node/index.d.ts
@@ -1,4 +1,4 @@
-import type { Angle, CssColor, Rule, CustomProperty, EnvironmentVariable, Function, Image, LengthValue, MediaQuery, Declaration, Ratio, Resolution, Selector, SupportsCondition, Time, Token, TokenOrValue, UnknownAtRule, Url, Variable, StyleRule, DeclarationBlock, ParsedComponent, Multiplier, StyleSheet } from './ast';
+import type { Angle, CssColor, Rule, CustomProperty, EnvironmentVariable, Function, Image, LengthValue, MediaQuery, Declaration, Ratio, Resolution, Selector, SupportsCondition, Time, Token, TokenOrValue, UnknownAtRule, Url, Variable, StyleRule, DeclarationBlock, ParsedComponent, Multiplier, StyleSheet, Location2 } from './ast';
import { Targets, Features } from './targets';
export * from './ast';
@@ -138,7 +138,7 @@ interface CustomAtRule {
name: N,
prelude: R['prelude'] extends keyof MappedPrelude ? MappedPrelude[R['prelude']] : ParsedComponent,
body: FindByType>,
- loc: Location
+ loc: Location2
}
type CustomAtRuleBody = {
From fcc518d5111222384aee3353023eeccba1cf3c01 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 00:18:44 -0500
Subject: [PATCH 055/137] Bump rustc version
---
rust-toolchain.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index a436857e..80afd2d3 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
[toolchain]
-channel = "1.76.0"
+channel = "1.83.0"
components = ["rustfmt", "clippy"]
From fbae126f4b3c23383a82a97bf0b98af8f51a44aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BF=A0=20/=20green?=
Date: Thu, 9 Jan 2025 14:20:33 +0900
Subject: [PATCH 056/137] Call StyleSheet / StyleSheetExit / Rule.custom.* in
visitors passed to composeVisitors (#875)
---
node/composeVisitors.js | 23 +++++-
node/test/composeVisitors.test.mjs | 114 +++++++++++++++++++++++++++++
2 files changed, 133 insertions(+), 4 deletions(-)
diff --git a/node/composeVisitors.js b/node/composeVisitors.js
index 850058d0..9d5796e3 100644
--- a/node/composeVisitors.js
+++ b/node/composeVisitors.js
@@ -13,8 +13,10 @@ function composeVisitors(visitors) {
/** @type Visitor */
let res = {};
- composeObjectVisitors(res, visitors, 'Rule', ruleVisitor, wrapUnknownAtRule);
- composeObjectVisitors(res, visitors, 'RuleExit', ruleVisitor, wrapUnknownAtRule);
+ composeSimpleVisitors(res, visitors, 'StyleSheet');
+ composeSimpleVisitors(res, visitors, 'StyleSheetExit');
+ composeObjectVisitors(res, visitors, 'Rule', ruleVisitor, wrapCustomAndUnknownAtRule);
+ composeObjectVisitors(res, visitors, 'RuleExit', ruleVisitor, wrapCustomAndUnknownAtRule);
composeObjectVisitors(res, visitors, 'Declaration', declarationVisitor, wrapCustomProperty);
composeObjectVisitors(res, visitors, 'DeclarationExit', declarationVisitor, wrapCustomProperty);
composeSimpleVisitors(res, visitors, 'Url');
@@ -45,8 +47,14 @@ function composeVisitors(visitors) {
module.exports = composeVisitors;
-function wrapUnknownAtRule(k, f) {
- return k === 'unknown' ? (value => f({ type: 'unknown', value })) : f;
+function wrapCustomAndUnknownAtRule(k, f) {
+ if (k === 'unknown') {
+ return (value => f({ type: 'unknown', value }));
+ }
+ if (k === 'custom') {
+ return (value => f({ type: 'custom', value }));
+ }
+ return f;
}
function wrapCustomProperty(k, f) {
@@ -66,6 +74,13 @@ function ruleVisitor(f, item) {
}
return v?.(item.value);
}
+ if (item.type === 'custom') {
+ let v = f.custom;
+ if (typeof v === 'object') {
+ v = v[item.value.name];
+ }
+ return v?.(item.value);
+ }
return f[item.type]?.(item);
}
return f?.(item);
diff --git a/node/test/composeVisitors.test.mjs b/node/test/composeVisitors.test.mjs
index bb95d912..7718ec06 100644
--- a/node/test/composeVisitors.test.mjs
+++ b/node/test/composeVisitors.test.mjs
@@ -513,6 +513,87 @@ test('unknown rules', () => {
assert.equal(res.code.toString(), '.menu_link{background:#056ef0}');
});
+test('custom at rules', () => {
+ let res = transform({
+ filename: 'test.css',
+ minify: true,
+ code: Buffer.from(`
+ @testA;
+ @testB;
+ `),
+ customAtRules: {
+ testA: {},
+ testB: {}
+ },
+ visitor: composeVisitors([
+ {
+ Rule: {
+ custom: {
+ testA(rule) {
+ return {
+ type: 'style',
+ value: {
+ loc: rule.loc,
+ selectors: [
+ [{ type: 'class', name: 'testA' }]
+ ],
+ declarations: {
+ declarations: [
+ {
+ property: 'color',
+ value: {
+ type: 'rgb',
+ r: 0xff,
+ g: 0x00,
+ b: 0x00,
+ alpha: 1,
+ }
+ }
+ ]
+ }
+ }
+ };
+ }
+ }
+ }
+ },
+ {
+ Rule: {
+ custom: {
+ testB(rule) {
+ return {
+ type: 'style',
+ value: {
+ loc: rule.loc,
+ selectors: [
+ [{ type: 'class', name: 'testB' }]
+ ],
+ declarations: {
+ declarations: [
+ {
+ property: 'color',
+ value: {
+ type: 'rgb',
+ r: 0x00,
+ g: 0xff,
+ b: 0x00,
+ alpha: 1,
+ }
+ }
+ ]
+ }
+ }
+ };
+ }
+ }
+ }
+ }
+ ])
+ });
+
+ assert.equal(res.code.toString(), '.testA{color:red}.testB{color:#0f0}');
+});
+
test('known rules', () => {
let declared = new Map();
let res = transform({
@@ -686,4 +767,37 @@ test('variables', () => {
assert.equal(res.code.toString(), 'body{padding:20px;width:600px}');
});
+test('StyleSheet', () => {
+ let styleSheetCalledCount = 0;
+ let styleSheetExitCalledCount = 0;
+ transform({
+ filename: 'test.css',
+ code: Buffer.from(`
+ body {
+ color: blue;
+ }
+ `),
+ visitor: composeVisitors([
+ {
+ StyleSheet() {
+ styleSheetCalledCount++
+ },
+ StyleSheetExit() {
+ styleSheetExitCalledCount++
+ }
+ },
+ {
+ StyleSheet() {
+ styleSheetCalledCount++
+ },
+ StyleSheetExit() {
+ styleSheetExitCalledCount++
+ }
+ }
+ ])
+ });
+ assert.equal(styleSheetCalledCount, 2);
+ assert.equal(styleSheetExitCalledCount, 2);
+});
+
test.run();
From e5c575d5465c623a09f2731fb9194888a09540c3 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 00:23:46 -0500
Subject: [PATCH 057/137] fix lifetime
---
src/parser.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/parser.rs b/src/parser.rs
index 3e37e518..15b78f33 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -155,7 +155,7 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> TopLevelRuleParser<'a,
}
}
- pub fn nested<'x: 'b>(&'x mut self) -> NestedRuleParser<'_, 'o, 'i, T> {
+ pub fn nested<'x: 'b>(&'x mut self) -> NestedRuleParser<'x, 'o, 'i, T> {
NestedRuleParser {
options: &self.options,
at_rule_parser: self.at_rule_parser,
From e3b1e88e0731d9237e22400435b108a330ea2950 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 12:08:16 -0500
Subject: [PATCH 058/137] Fix parsing ambiguous `none` keyword in list-style
shorthand
Fixes #890
---
src/lib.rs | 11 +++++
src/properties/list.rs | 106 ++++++++++++++++++++++++++++++++++++++++-
2 files changed, 116 insertions(+), 1 deletion(-)
diff --git a/src/lib.rs b/src/lib.rs
index 46ce5e39..508b1984 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -16652,6 +16652,17 @@ mod tests {
".foo { list-style: \"★\" url(ellipse.png) outside; }",
".foo{list-style:url(ellipse.png) \"★\"}",
);
+ minify_test(".foo { list-style: none; }", ".foo{list-style:none}");
+ minify_test(".foo { list-style: none none outside; }", ".foo{list-style:none}");
+ minify_test(".foo { list-style: none none inside; }", ".foo{list-style:inside none}");
+ minify_test(".foo { list-style: none inside; }", ".foo{list-style:inside none}");
+ minify_test(".foo { list-style: none disc; }", ".foo{list-style:outside}");
+ minify_test(".foo { list-style: none inside disc; }", ".foo{list-style:inside}");
+ minify_test(".foo { list-style: none \"★\"; }", ".foo{list-style:\"★\"}");
+ minify_test(
+ ".foo { list-style: none url(foo.png); }",
+ ".foo{list-style:url(foo.png) none}",
+ );
test(
r#"
diff --git a/src/properties/list.rs b/src/properties/list.rs
index 235ca1a9..d3c332bb 100644
--- a/src/properties/list.rs
+++ b/src/properties/list.rs
@@ -329,7 +329,7 @@ enum_property! {
}
}
-shorthand_property! {
+define_shorthand! {
/// A value for the [list-style](https://www.w3.org/TR/2020/WD-css-lists-3-20201117/#list-style-property) shorthand property.
pub struct ListStyle<'i> {
/// The position of the list marker.
@@ -342,6 +342,110 @@ shorthand_property! {
}
}
+impl<'i> Parse<'i> for ListStyle<'i> {
+ fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+ let mut position = None;
+ let mut image = None;
+ let mut list_style_type = None;
+ let mut nones = 0;
+
+ loop {
+ // `none` is ambiguous - both list-style-image and list-style-type support it.
+ if input.try_parse(|input| input.expect_ident_matching("none")).is_ok() {
+ nones += 1;
+ if nones > 2 {
+ return Err(input.new_custom_error(ParserError::InvalidValue));
+ }
+ continue;
+ }
+
+ if image.is_none() {
+ if let Ok(val) = input.try_parse(Image::parse) {
+ image = Some(val);
+ continue;
+ }
+ }
+
+ if position.is_none() {
+ if let Ok(val) = input.try_parse(ListStylePosition::parse) {
+ position = Some(val);
+ continue;
+ }
+ }
+
+ if list_style_type.is_none() {
+ if let Ok(val) = input.try_parse(ListStyleType::parse) {
+ list_style_type = Some(val);
+ continue;
+ }
+ }
+
+ break;
+ }
+
+ // Assign the `none` to the opposite property from the one we have a value for,
+ // or both in case neither list-style-image or list-style-type have a value.
+ match (nones, image, list_style_type) {
+ (2, None, None) | (1, None, None) => Ok(ListStyle {
+ position: position.unwrap_or_default(),
+ image: Image::None,
+ list_style_type: ListStyleType::None,
+ }),
+ (1, Some(image), None) => Ok(ListStyle {
+ position: position.unwrap_or_default(),
+ image,
+ list_style_type: ListStyleType::None,
+ }),
+ (1, None, Some(list_style_type)) => Ok(ListStyle {
+ position: position.unwrap_or_default(),
+ image: Image::None,
+ list_style_type,
+ }),
+ (0, image, list_style_type) => Ok(ListStyle {
+ position: position.unwrap_or_default(),
+ image: image.unwrap_or_default(),
+ list_style_type: list_style_type.unwrap_or_default(),
+ }),
+ _ => Err(input.new_custom_error(ParserError::InvalidValue)),
+ }
+ }
+}
+
+impl<'i> ToCss for ListStyle<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ let mut needs_space = false;
+ if self.position != ListStylePosition::default() {
+ self.position.to_css(dest)?;
+ needs_space = true;
+ }
+
+ if self.image != Image::default() {
+ if needs_space {
+ dest.write_char(' ')?;
+ }
+ self.image.to_css(dest)?;
+ needs_space = true;
+ }
+
+ if self.list_style_type != ListStyleType::default() {
+ if needs_space {
+ dest.write_char(' ')?;
+ }
+ self.list_style_type.to_css(dest)?;
+ needs_space = true;
+ }
+
+ if !needs_space {
+ self.position.to_css(dest)?;
+ }
+
+ Ok(())
+ }
+}
+
impl<'i> FallbackValues for ListStyle<'i> {
fn get_fallbacks(&mut self, targets: Targets) -> Vec {
self
From 4d34f9819fd9d9894be8b82e3a48355e1a645fdb Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 12:12:26 -0500
Subject: [PATCH 059/137] v1.29.1
---
Cargo.lock | 6 +++---
Cargo.toml | 2 +-
napi/Cargo.toml | 4 ++--
node/Cargo.toml | 2 +-
package.json | 2 +-
src/properties/list.rs | 2 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index eae59587..fa68d332 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "ahash"
@@ -730,7 +730,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.62"
+version = "1.0.0-alpha.63"
dependencies = [
"ahash 0.8.11",
"assert_cmd",
@@ -777,7 +777,7 @@ dependencies = [
[[package]]
name = "lightningcss-napi"
-version = "0.4.2"
+version = "0.4.3"
dependencies = [
"crossbeam-channel",
"cssparser",
diff --git a/Cargo.toml b/Cargo.toml
index 2152859e..82802a65 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.62"
+version = "1.0.0-alpha.63"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index fdca5a68..f2019e4b 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -1,7 +1,7 @@
[package]
authors = ["Devon Govett "]
name = "lightningcss-napi"
-version = "0.4.2"
+version = "0.4.3"
description = "Node-API bindings for Lightning CSS"
license = "MPL-2.0"
repository = "https://github.com/parcel-bundler/lightningcss"
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.62", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.63", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/node/Cargo.toml b/node/Cargo.toml
index 55aa66b8..bc7df82b 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -9,7 +9,7 @@ publish = false
crate-type = ["cdylib"]
[dependencies]
-lightningcss-napi = { version = "0.4.2", path = "../napi", features = [
+lightningcss-napi = { version = "0.4.3", path = "../napi", features = [
"bundler",
"visitor",
] }
diff --git a/package.json b/package.json
index bb7eff5f..de384950 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.29.0",
+ "version": "1.29.1",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
diff --git a/src/properties/list.rs b/src/properties/list.rs
index d3c332bb..e411667d 100644
--- a/src/properties/list.rs
+++ b/src/properties/list.rs
@@ -4,7 +4,7 @@ use super::{Property, PropertyId};
use crate::context::PropertyHandlerContext;
use crate::declaration::{DeclarationBlock, DeclarationList};
use crate::error::{ParserError, PrinterError};
-use crate::macros::{define_shorthand, enum_property, shorthand_handler, shorthand_property};
+use crate::macros::{define_shorthand, enum_property, shorthand_handler};
use crate::printer::Printer;
use crate::targets::{Browsers, Targets};
use crate::traits::{FallbackValues, IsCompatible, Parse, PropertyHandler, Shorthand, ToCss};
From b3a168e156cb9ded7f03b593bde43a479d1b728e Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 12:21:55 -0500
Subject: [PATCH 060/137] Update artifact actions
---
.github/workflows/release.yml | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 0a0a9618..b598c036 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -48,7 +48,7 @@ jobs:
if: ${{ matrix.strip }}
run: ${{ matrix.strip }} *.node ${{ matrix.binary }}
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.target }}
path: |
@@ -90,7 +90,7 @@ jobs:
- name: Strip debug symbols # https://github.com/rust-lang/rust/issues/46034
run: strip -x *.node lightningcss
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: bindings-aarch64-apple-darwin
path: |
@@ -153,7 +153,7 @@ jobs:
if: ${{ matrix.strip }}
run: ${{ matrix.strip }} *.node lightningcss
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: bindings-${{ matrix.target }}
path: |
@@ -201,7 +201,7 @@ jobs:
rm -rf .yarn/cache
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: bindings-x86_64-unknown-freebsd
path: |
@@ -232,7 +232,7 @@ jobs:
export PATH="$PATH:./binaryen-version_111/bin"
yarn wasm:build-release
- name: Upload artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: wasm
path: wasm/lightningcss_node.wasm
@@ -250,9 +250,12 @@ jobs:
- uses: actions/checkout@v3
- uses: bahmutov/npm-install@v1.8.32
- name: Download artifacts
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4
with:
path: artifacts
+ merge-multiple: true
+ - name: Show artifacts
+ run: ls -R artifacts
- name: Build npm packages
run: |
node scripts/build-npm.js
From b10f9baf8878411bf2b09dfe8d64ba09ef7a4eac Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Thu, 9 Jan 2025 12:44:22 -0500
Subject: [PATCH 061/137] fix ci?
---
.github/workflows/release.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b598c036..a2eeb96a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -253,7 +253,6 @@ jobs:
uses: actions/download-artifact@v4
with:
path: artifacts
- merge-multiple: true
- name: Show artifacts
run: ls -R artifacts
- name: Build npm packages
From fc7f350e5b26188941778514a1f0c0ae48282e72 Mon Sep 17 00:00:00 2001
From: Andrew Patton
Date: Thu, 16 Jan 2025 18:27:59 -0800
Subject: [PATCH 062/137] Use same property for color function compiled output
(#894)
---
website/pages/transpilation.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/website/pages/transpilation.md b/website/pages/transpilation.md
index 12f69fc7..ed969fce 100644
--- a/website/pages/transpilation.md
+++ b/website/pages/transpilation.md
@@ -286,8 +286,8 @@ compiles to:
```css
.foo {
- background-color: #6a805d;
- background-color: color(a98-rgb .44091 .49971 .37408);
+ color: #6a805d;
+ color: color(a98-rgb .44091 .49971 .37408);
}
```
From c35a5fcaa6d6e233256f4c06836a0f602a4968cc Mon Sep 17 00:00:00 2001
From: Nick Randall
Date: Wed, 5 Mar 2025 00:53:26 -0700
Subject: [PATCH 063/137] upgrade detect-libc (#923)
---
cli/postinstall.js | 3 ++-
node/index.js | 3 ++-
package.json | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/cli/postinstall.js b/cli/postinstall.js
index abf9dc19..19dadc79 100644
--- a/cli/postinstall.js
+++ b/cli/postinstall.js
@@ -3,7 +3,8 @@ let path = require('path');
let parts = [process.platform, process.arch];
if (process.platform === 'linux') {
- const {MUSL, family} = require('detect-libc');
+ const {MUSL, familySync} = require('detect-libc');
+ const family = familySync();
if (family === MUSL) {
parts.push('musl');
} else if (process.arch === 'arm') {
diff --git a/node/index.js b/node/index.js
index a9f2f6d5..011d04b4 100644
--- a/node/index.js
+++ b/node/index.js
@@ -1,6 +1,7 @@
let parts = [process.platform, process.arch];
if (process.platform === 'linux') {
- const { MUSL, family } = require('detect-libc');
+ const { MUSL, familySync } = require('detect-libc');
+ const family = familySync();
if (family === MUSL) {
parts.push('musl');
} else if (process.arch === 'arm') {
diff --git a/package.json b/package.json
index de384950..bffb0446 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"node/*.flow"
],
"dependencies": {
- "detect-libc": "^1.0.3"
+ "detect-libc": "^2.0.3"
},
"devDependencies": {
"@babel/parser": "7.21.4",
From b15341333a3a4825c578c2523837f54efff4c366 Mon Sep 17 00:00:00 2001
From: Liam Esparraguera
Date: Tue, 4 Mar 2025 23:54:05 -0800
Subject: [PATCH 064/137] fix double hyphen when number negative and in
scientific notation (#901)
---
src/values/number.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/values/number.rs b/src/values/number.rs
index bac4d23d..60506eac 100644
--- a/src/values/number.rs
+++ b/src/values/number.rs
@@ -40,7 +40,7 @@ impl ToCss for CSSNumber {
cssparser::ToCss::to_css(self, &mut s)?;
if number < 0.0 {
dest.write_char('-')?;
- dest.write_str(s.trim_start_matches("-0"))
+ dest.write_str(s.trim_start_matches("-").trim_start_matches("0"))
} else {
dest.write_str(s.trim_start_matches('0'))
}
From 22846530a008baf7a0985e9b87d90c6ae5c4047b Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Wed, 5 Mar 2025 21:45:23 -0800
Subject: [PATCH 065/137] Fix parsing style container queries without a value
Closes #915
---
node/ast.d.ts | 6 +++++-
src/lib.rs | 21 ++++++++++++++++++++-
src/rules/container.rs | 26 +++++++++++++++++---------
3 files changed, 42 insertions(+), 11 deletions(-)
diff --git a/node/ast.d.ts b/node/ast.d.ts
index cc198e2e..4af77f67 100644
--- a/node/ast.d.ts
+++ b/node/ast.d.ts
@@ -7453,9 +7453,13 @@ export type ContainerSizeFeatureId = "width" | "height" | "inline-size" | "block
* Represents a style query within a container condition.
*/
export type StyleQuery = | {
- type: "feature";
+ type: "declaration";
value: D;
}
+| {
+ type: "property";
+ value: PropertyId;
+ }
| {
type: "not";
value: StyleQuery;
diff --git a/src/lib.rs b/src/lib.rs
index 508b1984..88630424 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -28270,6 +28270,26 @@ mod tests {
"#,
"@container style(--my-prop:foo - bar ()){.foo{color:red}}",
);
+ minify_test(
+ r#"
+ @container style(--test) {
+ .foo {
+ color: red;
+ }
+ }
+ "#,
+ "@container style(--test){.foo{color:red}}",
+ );
+ minify_test(
+ r#"
+ @container style(width) {
+ .foo {
+ color: red;
+ }
+ }
+ "#,
+ "@container style(width){.foo{color:red}}",
+ );
// Disallow 'none', 'not', 'and', 'or' as a ``
// https://github.com/w3c/csswg-drafts/issues/7203#issuecomment-1144257312
@@ -28310,7 +28330,6 @@ mod tests {
error_test("@container (inline-size <= foo) {}", ParserError::InvalidMediaQuery);
error_test("@container (orientation <= 10px) {}", ParserError::InvalidMediaQuery);
- error_test("@container style(width) {}", ParserError::EndOfInput);
error_test(
"@container style(style(--foo: bar)) {}",
ParserError::UnexpectedToken(crate::properties::custom::Token::Function("style".into())),
diff --git a/src/rules/container.rs b/src/rules/container.rs
index a911d33b..b5f5bd1a 100644
--- a/src/rules/container.rs
+++ b/src/rules/container.rs
@@ -112,9 +112,13 @@ impl FeatureToCss for ContainerSizeFeatureId {
)]
#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
pub enum StyleQuery<'i> {
- /// A style feature, implicitly parenthesized.
+ /// A property declaration.
#[cfg_attr(feature = "serde", serde(borrow, with = "ValueWrapper::"))]
- Feature(Property<'i>),
+ Declaration(Property<'i>),
+ /// A property name, without a value.
+ /// This matches if the property value is different from the initial value.
+ #[cfg_attr(feature = "serde", serde(with = "ValueWrapper::"))]
+ Property(PropertyId<'i>),
/// A negation of a condition.
#[cfg_attr(feature = "visitor", skip_type)]
#[cfg_attr(feature = "serde", serde(with = "ValueWrapper::>"))]
@@ -170,11 +174,14 @@ impl<'i> QueryCondition<'i> for StyleQuery<'i> {
#[inline]
fn parse_feature<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
let property_id = PropertyId::parse(input)?;
- input.expect_colon()?;
- input.skip_whitespace();
- let feature = Self::Feature(Property::parse(property_id, input, &Default::default())?);
- let _ = input.try_parse(|input| parse_important(input));
- Ok(feature)
+ if input.try_parse(|input| input.expect_colon()).is_ok() {
+ input.skip_whitespace();
+ let feature = Self::Declaration(Property::parse(property_id, input, &Default::default())?);
+ let _ = input.try_parse(|input| parse_important(input));
+ Ok(feature)
+ } else {
+ Ok(Self::Property(property_id))
+ }
}
#[inline]
@@ -191,7 +198,7 @@ impl<'i> QueryCondition<'i> for StyleQuery<'i> {
match self {
StyleQuery::Not(_) => true,
StyleQuery::Operation { operator, .. } => Some(*operator) != parent_operator,
- StyleQuery::Feature(_) => true,
+ StyleQuery::Declaration(_) | StyleQuery::Property(_) => true,
}
}
}
@@ -232,7 +239,8 @@ impl<'i> ToCss for StyleQuery<'i> {
W: std::fmt::Write,
{
match *self {
- StyleQuery::Feature(ref f) => f.to_css(dest, false),
+ StyleQuery::Declaration(ref f) => f.to_css(dest, false),
+ StyleQuery::Property(ref f) => f.to_css(dest),
StyleQuery::Not(ref c) => {
dest.write_str("not ")?;
to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
From 50a956bdadf15c504ce568e6c42a1d5a7b0ce940 Mon Sep 17 00:00:00 2001
From: neverland
Date: Thu, 6 Mar 2025 13:52:07 +0800
Subject: [PATCH 066/137] Bump browserslist-rs 0.17.0 (#912)
---
Cargo.lock | 5 ++---
Cargo.toml | 2 +-
c/Cargo.toml | 2 +-
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index fa68d332..6d0e8466 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -140,9 +140,9 @@ dependencies = [
[[package]]
name = "browserslist-rs"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdf0ca73de70c3da94e4194e4a01fe732378f55d47cf4c0588caab22a0dbfa14"
+checksum = "74c973b79d9b6b89854493185ab760c6ef8e54bcfad10ad4e33991e46b374ac8"
dependencies = [
"ahash 0.8.11",
"chrono",
@@ -150,7 +150,6 @@ dependencies = [
"indexmap 2.7.0",
"itertools 0.13.0",
"nom",
- "once_cell",
"serde",
"serde_json",
"thiserror",
diff --git a/Cargo.toml b/Cargo.toml
index 82802a65..3ab9bf27 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -77,7 +77,7 @@ indexmap = { version = "2.2.6", features = ["serde"] }
# CLI deps
atty = { version = "0.2", optional = true }
clap = { version = "3.0.6", features = ["derive"], optional = true }
-browserslist-rs = { version = "0.16.0", optional = true }
+browserslist-rs = { version = "0.17.0", optional = true }
rayon = { version = "1.5.1", optional = true }
dashmap = { version = "5.0.0", optional = true }
serde_json = { version = "1.0.78", optional = true }
diff --git a/c/Cargo.toml b/c/Cargo.toml
index 96641dc7..3d20add0 100644
--- a/c/Cargo.toml
+++ b/c/Cargo.toml
@@ -11,7 +11,7 @@ crate-type = ["cdylib"]
[dependencies]
lightningcss = { path = "../", features = ["browserslist"] }
parcel_sourcemap = { version = "2.1.1", features = ["json"] }
-browserslist-rs = { version = "0.16.0" }
+browserslist-rs = { version = "0.17.0" }
[build-dependencies]
cbindgen = "0.24.3"
From d7b1cea9991d0f9785353c5aff09ffe8269ac320 Mon Sep 17 00:00:00 2001
From: CPunisher <1343316114@qq.com>
Date: Thu, 6 Mar 2025 13:52:35 +0800
Subject: [PATCH 067/137] Add wasm compilation cfg for (#895)
---
src/targets.rs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/targets.rs b/src/targets.rs
index 6c1f429a..8180852f 100644
--- a/src/targets.rs
+++ b/src/targets.rs
@@ -51,6 +51,7 @@ impl Browsers {
Self::from_distribs(resolve(query, &Opts::default())?)
}
+ #[cfg(not(target_arch = "wasm32"))]
/// Finds browserslist configuration, selects queries by environment and loads the resulting queries into LightningCSS targets.
///
/// Configuration resolution is modeled after the original `browserslist` nodeJS package.
From eccb67397dd8d2ba6f04287d650ca420a21fdd8b Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Wed, 5 Mar 2025 21:55:30 -0800
Subject: [PATCH 068/137] bump browser compat data
---
package.json | 7 +++---
src/compat.rs | 44 ++++++++++++++++++------------------
src/prefixes.rs | 60 ++++++++++++++++++++++++-------------------------
yarn.lock | 15 ++++++++-----
4 files changed, 65 insertions(+), 61 deletions(-)
diff --git a/package.json b/package.json
index bffb0446..794b78fa 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.6.26",
+ "@mdn/browser-compat-data": "~5.7.0",
"@napi-rs/cli": "^2.14.0",
"autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001690",
+ "caniuse-lite": "^1.0.30001702",
"codemirror": "^6.0.1",
"cssnano": "^7.0.6",
"esbuild": "^0.19.8",
@@ -79,8 +79,7 @@
"uvu": "^0.5.6"
},
"resolutions": {
- "lightningcss": "link:.",
- "caniuse-lite": "^1.0.30001677"
+ "lightningcss": "link:."
},
"scripts": {
"prepare": "patch-package",
diff --git a/src/compat.rs b/src/compat.rs
index 6f360bb1..6ed9ee88 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -446,7 +446,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -538,7 +538,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -583,7 +583,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -628,7 +628,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -673,7 +673,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -718,7 +718,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -763,7 +763,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -808,7 +808,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -900,7 +900,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -945,7 +945,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1015,7 +1015,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1060,7 +1060,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1150,7 +1150,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1195,7 +1195,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1245,7 +1245,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1332,7 +1332,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1377,7 +1377,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1422,7 +1422,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1462,7 +1462,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1507,7 +1507,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1552,7 +1552,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
@@ -1619,7 +1619,7 @@ impl Feature {
}
}
if let Some(version) = browsers.android {
- if version < 8585216 {
+ if version < 8716288 {
return false;
}
}
diff --git a/src/prefixes.rs b/src/prefixes.rs
index 8735011a..803b9f98 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -562,7 +562,7 @@ impl Feature {
}
Feature::Element => {
if let Some(version) = browsers.firefox {
- if version >= 131072 && version <= 8847360 {
+ if version >= 131072 && version <= 8912896 {
prefixes |= VendorPrefix::Moz;
}
}
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 197120 && version <= 1179904 {
+ if version >= 197120 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -682,7 +682,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 196864 && version <= 1179904 {
+ if version >= 196864 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1190,17 +1190,17 @@ impl Feature {
}
Feature::Fill | Feature::FillAvailable => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8716288 {
+ if version >= 1441792 && version <= 8781824 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8519680 {
+ if version >= 263168 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8519680 {
+ if version >= 5177344 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1225,7 +1225,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 && version <= 1703936 {
+ if version >= 262144 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1269,27 +1269,27 @@ impl Feature {
}
Feature::Stretch => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8716288 {
+ if version >= 1441792 && version <= 8781824 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.firefox {
- if version >= 196608 && version <= 8847360 {
+ if version >= 196608 && version <= 8912896 {
prefixes |= VendorPrefix::Moz;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8519680 {
+ if version >= 263168 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8519680 {
+ if version >= 5177344 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 && version <= 1179904 {
+ if version >= 458752 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1299,12 +1299,12 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 458752 && version <= 1179904 {
+ if version >= 458752 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.samsung {
- if version >= 327680 && version <= 1703936 {
+ if version >= 327680 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1374,7 +1374,7 @@ impl Feature {
}
Feature::TextDecorationSkip | Feature::TextDecorationSkipInk => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 && version <= 1179904 {
+ if version >= 524288 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1386,12 +1386,12 @@ impl Feature {
}
Feature::TextDecoration => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 && version <= 1179904 {
+ if version >= 524288 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.safari {
- if version >= 524288 && version <= 1179904 {
+ if version >= 524288 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1415,7 +1415,7 @@ impl Feature {
}
Feature::TextSizeAdjust => {
if let Some(version) = browsers.firefox {
- if version <= 8519680 {
+ if version <= 8650752 {
prefixes |= VendorPrefix::Moz;
}
}
@@ -1430,7 +1430,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 327680 && version <= 1179904 {
+ if version >= 327680 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1534,7 +1534,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 && version <= 1179904 {
+ if version >= 458752 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1544,12 +1544,12 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 393472 && version <= 1179904 {
+ if version >= 393472 && version <= 1180416 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 && version <= 1703936 {
+ if version >= 262144 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1921,17 +1921,17 @@ impl Feature {
}
Feature::CrossFade => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8716288 {
+ if version >= 1114112 && version <= 8781824 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8519680 {
+ if version >= 263168 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8519680 {
+ if version >= 5177344 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1951,7 +1951,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 && version <= 1703936 {
+ if version >= 262144 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2156,17 +2156,17 @@ impl Feature {
}
Feature::PrintColorAdjust | Feature::ColorAdjust => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8716288 {
+ if version >= 1114112 && version <= 8781824 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8519680 {
+ if version >= 263168 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8519680 {
+ if version >= 5177344 && version <= 8585216 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2191,7 +2191,7 @@ impl Feature {
}
}
if let Some(version) = browsers.samsung {
- if version >= 262144 && version <= 1703936 {
+ if version >= 262144 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index 638e0a6b..fc76b92c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -570,10 +570,10 @@
resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
-"@mdn/browser-compat-data@~5.6.26":
- version "5.6.26"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.6.26.tgz#0d1a64cf0a04a29f4283bbc1f5a313f355f9c73d"
- integrity sha512-7NdgdOR7lkzrN70zGSULmrcvKyi/aJjpTJRCbuy8IZuHiLkPTvsr10jW0MJgWzK2l2wTmhdQvegTw6yNU5AVNQ==
+"@mdn/browser-compat-data@~5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.7.0.tgz#3f08f76234cb075e8377bbb822d93ebc2003bee5"
+ integrity sha512-Z96UeDGT80sBRJAY67xKnbDEdt5F/8wduy6aU5NeEzLwFqWcyx1oNcj9XapZNMp/i0Nz9iTWZqht+1zcq48j5Q==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.1"
@@ -1639,11 +1639,16 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001677, caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001690:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688:
version "1.0.30001690"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8"
integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==
+caniuse-lite@^1.0.30001702:
+ version "1.0.30001702"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz#cde16fa8adaa066c04aec2967b6cde46354644c4"
+ integrity sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==
+
chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
From f2303df29448a55c5f4f284f747eb53760769fe4 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Wed, 5 Mar 2025 22:02:46 -0800
Subject: [PATCH 069/137] v1.29.2
---
Cargo.lock | 2 +-
Cargo.toml | 2 +-
napi/Cargo.toml | 2 +-
package.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 6d0e8466..5dbeb181 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -729,7 +729,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.63"
+version = "1.0.0-alpha.64"
dependencies = [
"ahash 0.8.11",
"assert_cmd",
diff --git a/Cargo.toml b/Cargo.toml
index 3ab9bf27..8e58f5f5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.63"
+version = "1.0.0-alpha.64"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index f2019e4b..ae96485c 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.63", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.64", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/package.json b/package.json
index 794b78fa..19a5e180 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.29.1",
+ "version": "1.29.2",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
From 37c4f4df4a7ea8503a7fa5f0c5455dc405f434cd Mon Sep 17 00:00:00 2001
From: Philipp Spiess
Date: Fri, 14 Mar 2025 18:05:04 +0100
Subject: [PATCH 070/137] Add support for `::details-content` and
`::target-text` (#930)
---
scripts/build-prefixes.js | 2 +
selectors/parser.rs | 3 ++
src/compat.rs | 82 +++++++++++++++++++++++++++++++++++++++
src/selector.rs | 10 +++++
4 files changed, 97 insertions(+)
diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js
index 47a42692..32951a63 100644
--- a/scripts/build-prefixes.js
+++ b/scripts/build-prefixes.js
@@ -332,6 +332,8 @@ let mdnFeatures = {
accentSystemColor: mdn.css.types.color['system-color'].accentcolor_accentcolortext.__compat.support,
animationTimelineShorthand: mdn.css.properties.animation['animation-timeline_included'].__compat.support,
viewTransition: mdn.css.selectors['view-transition'].__compat.support,
+ detailsContent: mdn.css.selectors['details-content'].__compat.support,
+ targetText: mdn.css.selectors['target-text'].__compat.support,
};
for (let key in mdn.css.types.length) {
diff --git a/selectors/parser.rs b/selectors/parser.rs
index d3e18f74..e97d5347 100644
--- a/selectors/parser.rs
+++ b/selectors/parser.rs
@@ -3929,6 +3929,9 @@ pub mod tests {
assert!(parse("foo:where()").is_err());
assert!(parse("foo:where(div, foo, .bar baz)").is_ok());
assert!(parse("foo:where(::before)").is_err());
+
+ assert!(parse("foo::details-content").is_ok());
+ assert!(parse("foo::target-text").is_ok());
}
#[test]
diff --git a/src/compat.rs b/src/compat.rs
index 6ed9ee88..4a15ee56 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -42,6 +42,7 @@ pub enum Feature {
DecimalLeadingZeroListStyleType,
DecimalListStyleType,
DefaultPseudo,
+ DetailsContent,
DevanagariListStyleType,
Dialog,
DirSelector,
@@ -191,6 +192,7 @@ pub enum Feature {
StringListStyleType,
SymbolsListStyleType,
TamilListStyleType,
+ TargetText,
TeluguListStyleType,
TextDecorationThicknessPercent,
TextDecorationThicknessShorthand,
@@ -3505,6 +3507,86 @@ impl Feature {
return false;
}
}
+ Feature::DetailsContent => {
+ if let Some(version) = browsers.chrome {
+ if version < 8585216 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.edge {
+ if version < 8585216 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.opera {
+ if version < 5701632 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.safari {
+ if version < 1180672 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.ios_saf {
+ if version < 1180672 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.android {
+ if version < 8585216 {
+ return false;
+ }
+ }
+ if browsers.firefox.is_some() || browsers.ie.is_some() || browsers.samsung.is_some() {
+ return false;
+ }
+ }
+ Feature::TargetText => {
+ if let Some(version) = browsers.chrome {
+ if version < 5832704 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.edge {
+ if version < 5832704 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.firefox {
+ if version < 8585216 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.opera {
+ if version < 4128768 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.safari {
+ if version < 1180160 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.ios_saf {
+ if version < 1180160 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.samsung {
+ if version < 983040 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.android {
+ if version < 5832704 {
+ return false;
+ }
+ }
+ if browsers.ie.is_some() {
+ return false;
+ }
+ }
Feature::QUnit => {
if let Some(version) = browsers.chrome {
if version < 4128768 {
diff --git a/src/selector.rs b/src/selector.rs
index e624b199..add55dcf 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -267,6 +267,8 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
"after" => After,
"first-line" => FirstLine,
"first-letter" => FirstLetter,
+ "details-content" => DetailsContent,
+ "target-text" => TargetText,
"cue" => Cue,
"cue-region" => CueRegion,
"selection" => Selection(VendorPrefix::None),
@@ -887,6 +889,10 @@ pub enum PseudoElement<'i> {
FirstLine,
/// The [::first-letter](https://drafts.csswg.org/css-pseudo-4/#first-letter-pseudo) pseudo element.
FirstLetter,
+ /// The [::details-content](https://drafts.csswg.org/css-pseudo-4/#details-content-pseudo)
+ DetailsContent,
+ /// The [::target-text](https://drafts.csswg.org/css-pseudo-4/#selectordef-target-text)
+ TargetText,
/// The [::selection](https://drafts.csswg.org/css-pseudo-4/#selectordef-selection) pseudo element.
#[cfg_attr(feature = "serde", serde(with = "PrefixWrapper"))]
Selection(VendorPrefix),
@@ -1139,6 +1145,8 @@ where
Before => dest.write_str(":before"),
FirstLine => dest.write_str(":first-line"),
FirstLetter => dest.write_str(":first-letter"),
+ DetailsContent => dest.write_str("::details-content"),
+ TargetText => dest.write_str("::target-text"),
Marker => dest.write_str("::marker"),
Selection(prefix) => write_prefixed!(prefix, "selection"),
Cue => dest.write_str("::cue"),
@@ -1903,6 +1911,8 @@ pub(crate) fn is_compatible(selectors: &[Selector], targets: Targets) -> bool {
PseudoElement::After | PseudoElement::Before => Feature::Gencontent,
PseudoElement::FirstLine => Feature::FirstLine,
PseudoElement::FirstLetter => Feature::FirstLetter,
+ PseudoElement::DetailsContent => Feature::DetailsContent,
+ PseudoElement::TargetText => Feature::TargetText,
PseudoElement::Selection(prefix) if *prefix == VendorPrefix::None => Feature::Selection,
PseudoElement::Placeholder(prefix) if *prefix == VendorPrefix::None => Feature::Placeholder,
PseudoElement::Marker => Feature::MarkerPseudo,
From b93c9c573e6bb5c6d4e13ad401d972f32ab9da84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=83=9E=E3=83=AB=E3=82=B3=E3=83=A1?=
Date: Sat, 15 Mar 2025 02:17:57 +0900
Subject: [PATCH 071/137] fix: update `placeholder-shown` property (#929)
---
src/selector.rs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/selector.rs b/src/selector.rs
index add55dcf..f376048c 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -158,8 +158,8 @@ impl<'a, 'o, 'i> parcel_selectors::parser::Parser<'i> for SelectorParser<'a, 'o,
"read-write" => ReadWrite(VendorPrefix::None),
"-moz-read-write" => ReadWrite(VendorPrefix::Moz),
"placeholder-shown" => PlaceholderShown(VendorPrefix::None),
- "-moz-placeholder-shown" => PlaceholderShown(VendorPrefix::Moz),
- "-ms-placeholder-shown" => PlaceholderShown(VendorPrefix::Ms),
+ "-moz-placeholder" => PlaceholderShown(VendorPrefix::Moz),
+ "-ms-input-placeholder" => PlaceholderShown(VendorPrefix::Ms),
"default" => Default,
"checked" => Checked,
"indeterminate" => Indeterminate,
From 3122b6519c6888a21774998821220ee5db4b95a7 Mon Sep 17 00:00:00 2001
From: Jan Nicklas
Date: Fri, 14 Mar 2025 18:18:03 +0100
Subject: [PATCH 072/137] allow to opt-out from css pure linting (#898)
---
src/lib.rs | 10 ++++++++++
src/stylesheet.rs | 5 +++++
2 files changed, 15 insertions(+)
diff --git a/src/lib.rs b/src/lib.rs
index 88630424..47e6bbf1 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -7111,6 +7111,16 @@ mod tests {
"@scope(._8Z4fiW_a) to (._8Z4fiW_b){._8Z4fiW_foo{color:red}}",
pure_css_module_options.clone(),
);
+ minify_test_with_options(
+ "/* cssmodules-pure-no-check */ :global(.foo) { color: red }",
+ ".foo{color:red}",
+ pure_css_module_options.clone(),
+ );
+ minify_test_with_options(
+ "/*! some license */ /* cssmodules-pure-no-check */ :global(.foo) { color: red }",
+ "/*! some license */\n.foo{color:red}",
+ pure_css_module_options.clone(),
+ );
error_test(
"input.defaultCheckbox::before h1 {width: 20px}",
diff --git a/src/stylesheet.rs b/src/stylesheet.rs
index bb5a704f..d1746720 100644
--- a/src/stylesheet.rs
+++ b/src/stylesheet.rs
@@ -172,6 +172,11 @@ where
cssparser::Token::Comment(comment) if comment.starts_with('!') => {
license_comments.push((*comment).into());
}
+ cssparser::Token::Comment(comment) if comment.contains("cssmodules-pure-no-check") => {
+ if let Some(css_modules) = &mut options.css_modules {
+ css_modules.pure = false;
+ }
+ }
_ => break,
}
state = parser.state();
From 48332fe12fd23a08c931bebc33c34d0aaf797066 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Fri, 14 Mar 2025 10:20:31 -0700
Subject: [PATCH 073/137] update ast
---
node/ast.d.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/node/ast.d.ts b/node/ast.d.ts
index 4af77f67..5e7ad008 100644
--- a/node/ast.d.ts
+++ b/node/ast.d.ts
@@ -6860,6 +6860,12 @@ export type PseudoElement =
| {
kind: "first-letter";
}
+ | {
+ kind: "details-content";
+ }
+ | {
+ kind: "target-text";
+ }
| {
kind: "selection";
vendorPrefix: VendorPrefix;
From c03a7e7f7cfe7a8d487f9402e3194a1d732f9a04 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Fri, 14 Mar 2025 10:23:36 -0700
Subject: [PATCH 074/137] bump compat data
---
package.json | 6 +++---
src/compat.rs | 23 ++++++++++++++-------
src/prefixes.rs | 54 ++++++++++++++++++++++++-------------------------
yarn.lock | 44 ++++++++++++++++++++++++----------------
4 files changed, 72 insertions(+), 55 deletions(-)
diff --git a/package.json b/package.json
index 19a5e180..5398e42c 100644
--- a/package.json
+++ b/package.json
@@ -48,10 +48,10 @@
"@codemirror/lang-javascript": "^6.1.2",
"@codemirror/lint": "^6.1.0",
"@codemirror/theme-one-dark": "^6.1.0",
- "@mdn/browser-compat-data": "~5.7.0",
+ "@mdn/browser-compat-data": "~5.7.3",
"@napi-rs/cli": "^2.14.0",
- "autoprefixer": "^10.4.20",
- "caniuse-lite": "^1.0.30001702",
+ "autoprefixer": "^10.4.21",
+ "caniuse-lite": "^1.0.30001704",
"codemirror": "^6.0.1",
"cssnano": "^7.0.6",
"esbuild": "^0.19.8",
diff --git a/src/compat.rs b/src/compat.rs
index 4a15ee56..4c237c4e 100644
--- a/src/compat.rs
+++ b/src/compat.rs
@@ -2926,6 +2926,16 @@ impl Feature {
}
}
Feature::AbsFunction | Feature::SignFunction => {
+ if let Some(version) = browsers.chrome {
+ if version < 8847360 {
+ return false;
+ }
+ }
+ if let Some(version) = browsers.edge {
+ if version < 8847360 {
+ return false;
+ }
+ }
if let Some(version) = browsers.firefox {
if version < 7733248 {
return false;
@@ -2941,13 +2951,12 @@ impl Feature {
return false;
}
}
- if browsers.android.is_some()
- || browsers.chrome.is_some()
- || browsers.edge.is_some()
- || browsers.ie.is_some()
- || browsers.opera.is_some()
- || browsers.samsung.is_some()
- {
+ if let Some(version) = browsers.android {
+ if version < 8847360 {
+ return false;
+ }
+ }
+ if browsers.ie.is_some() || browsers.opera.is_some() || browsers.samsung.is_some() {
return false;
}
}
diff --git a/src/prefixes.rs b/src/prefixes.rs
index 803b9f98..c967bdc6 100644
--- a/src/prefixes.rs
+++ b/src/prefixes.rs
@@ -562,7 +562,7 @@ impl Feature {
}
Feature::Element => {
if let Some(version) = browsers.firefox {
- if version >= 131072 && version <= 8912896 {
+ if version >= 131072 {
prefixes |= VendorPrefix::Moz;
}
}
@@ -672,7 +672,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 197120 && version <= 1180416 {
+ if version >= 197120 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -682,7 +682,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 196864 && version <= 1180416 {
+ if version >= 196864 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1190,17 +1190,17 @@ impl Feature {
}
Feature::Fill | Feature::FillAvailable => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8781824 {
+ if version >= 1441792 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8585216 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8585216 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1269,27 +1269,27 @@ impl Feature {
}
Feature::Stretch => {
if let Some(version) = browsers.chrome {
- if version >= 1441792 && version <= 8781824 {
+ if version >= 1441792 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.firefox {
- if version >= 196608 && version <= 8912896 {
+ if version >= 196608 {
prefixes |= VendorPrefix::Moz;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8585216 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8585216 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 && version <= 1180416 {
+ if version >= 458752 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1299,7 +1299,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 458752 && version <= 1180416 {
+ if version >= 458752 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1374,7 +1374,7 @@ impl Feature {
}
Feature::TextDecorationSkip | Feature::TextDecorationSkipInk => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 && version <= 1180416 {
+ if version >= 524288 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1386,12 +1386,12 @@ impl Feature {
}
Feature::TextDecoration => {
if let Some(version) = browsers.ios_saf {
- if version >= 524288 && version <= 1180416 {
+ if version >= 524288 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.safari {
- if version >= 524288 && version <= 1180416 {
+ if version >= 524288 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1414,10 +1414,8 @@ impl Feature {
}
}
Feature::TextSizeAdjust => {
- if let Some(version) = browsers.firefox {
- if version <= 8650752 {
- prefixes |= VendorPrefix::Moz;
- }
+ if browsers.firefox.is_some() {
+ prefixes |= VendorPrefix::Moz;
}
if let Some(version) = browsers.edge {
if version >= 786432 && version <= 1179648 {
@@ -1430,7 +1428,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 327680 && version <= 1180416 {
+ if version >= 327680 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1534,7 +1532,7 @@ impl Feature {
}
}
if let Some(version) = browsers.ios_saf {
- if version >= 458752 && version <= 1180416 {
+ if version >= 458752 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1544,7 +1542,7 @@ impl Feature {
}
}
if let Some(version) = browsers.safari {
- if version >= 393472 && version <= 1180416 {
+ if version >= 393472 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -1921,17 +1919,17 @@ impl Feature {
}
Feature::CrossFade => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8781824 {
+ if version >= 1114112 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8585216 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8585216 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
@@ -2156,17 +2154,17 @@ impl Feature {
}
Feature::PrintColorAdjust | Feature::ColorAdjust => {
if let Some(version) = browsers.chrome {
- if version >= 1114112 && version <= 8781824 {
+ if version >= 1114112 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.android {
- if version >= 263168 && version <= 8585216 {
+ if version >= 263168 {
prefixes |= VendorPrefix::WebKit;
}
}
if let Some(version) = browsers.edge {
- if version >= 5177344 && version <= 8585216 {
+ if version >= 5177344 {
prefixes |= VendorPrefix::WebKit;
}
}
diff --git a/yarn.lock b/yarn.lock
index fc76b92c..2c0ecdf5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -570,10 +570,10 @@
resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
-"@mdn/browser-compat-data@~5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.7.0.tgz#3f08f76234cb075e8377bbb822d93ebc2003bee5"
- integrity sha512-Z96UeDGT80sBRJAY67xKnbDEdt5F/8wduy6aU5NeEzLwFqWcyx1oNcj9XapZNMp/i0Nz9iTWZqht+1zcq48j5Q==
+"@mdn/browser-compat-data@~5.7.3":
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.7.3.tgz#1c4abb3a0ff9e631dd23eed1435d388ccc999f4b"
+ integrity sha512-ckygcngv0i7Qe0yOzzge/K7Gr5dnk2jNm/AYdqUd1ZTGa9pIEdDuVyWmL3bDU/NdJ8FtdSAjng98YfUuou9Csw==
"@mischnic/json-sourcemap@^0.1.0":
version "0.1.1"
@@ -1505,16 +1505,16 @@ at-least-node@^1.0.0:
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-autoprefixer@^10.4.20:
- version "10.4.20"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
- integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
+autoprefixer@^10.4.21:
+ version "10.4.21"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
+ integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==
dependencies:
- browserslist "^4.23.3"
- caniuse-lite "^1.0.30001646"
+ browserslist "^4.24.4"
+ caniuse-lite "^1.0.30001702"
fraction.js "^4.3.7"
normalize-range "^0.1.2"
- picocolors "^1.0.1"
+ picocolors "^1.1.1"
postcss-value-parser "^4.2.0"
available-typed-arrays@^1.0.7:
@@ -1580,6 +1580,16 @@ browserslist@^4.0.0, browserslist@^4.23.3, browserslist@^4.6.6:
node-releases "^2.0.19"
update-browserslist-db "^1.1.1"
+browserslist@^4.24.4:
+ version "4.24.4"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
+ integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
+ dependencies:
+ caniuse-lite "^1.0.30001688"
+ electron-to-chromium "^1.5.73"
+ node-releases "^2.0.19"
+ update-browserslist-db "^1.1.1"
+
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@@ -1639,15 +1649,15 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001688:
version "1.0.30001690"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8"
integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==
-caniuse-lite@^1.0.30001702:
- version "1.0.30001702"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz#cde16fa8adaa066c04aec2967b6cde46354644c4"
- integrity sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==
+caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001704:
+ version "1.0.30001704"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001704.tgz#6644fe909d924ac3a7125e8a0ab6af95b1f32990"
+ integrity sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==
chalk@^2.4.2:
version "2.4.2"
@@ -3182,7 +3192,7 @@ pend@~1.2.0:
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
-picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1:
+picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
From 80eb8617c5f8f5519ed85bd3eb6d8953f4d32493 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Fri, 14 Mar 2025 10:23:52 -0700
Subject: [PATCH 075/137] v1.29.3
---
Cargo.lock | 2 +-
Cargo.toml | 2 +-
napi/Cargo.toml | 2 +-
package.json | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 5dbeb181..4c4e0557 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -729,7 +729,7 @@ dependencies = [
[[package]]
name = "lightningcss"
-version = "1.0.0-alpha.64"
+version = "1.0.0-alpha.65"
dependencies = [
"ahash 0.8.11",
"assert_cmd",
diff --git a/Cargo.toml b/Cargo.toml
index 8e58f5f5..3c87e362 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,7 +12,7 @@ members = [
[package]
authors = ["Devon Govett "]
name = "lightningcss"
-version = "1.0.0-alpha.64"
+version = "1.0.0-alpha.65"
description = "A CSS parser, transformer, and minifier"
license = "MPL-2.0"
edition = "2021"
diff --git a/napi/Cargo.toml b/napi/Cargo.toml
index ae96485c..0aa3a14d 100644
--- a/napi/Cargo.toml
+++ b/napi/Cargo.toml
@@ -16,7 +16,7 @@ bundler = ["dep:crossbeam-channel", "dep:rayon"]
serde = { version = "1.0.201", features = ["derive"] }
serde_bytes = "0.11.5"
cssparser = "0.33.0"
-lightningcss = { version = "1.0.0-alpha.64", path = "../", features = [
+lightningcss = { version = "1.0.0-alpha.65", path = "../", features = [
"nodejs",
"serde",
] }
diff --git a/package.json b/package.json
index 5398e42c..b4c1f4bf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lightningcss",
- "version": "1.29.2",
+ "version": "1.29.3",
"license": "MPL-2.0",
"description": "A CSS parser, transformer, and minifier written in Rust",
"main": "node/index.js",
From 0daccac88ff2c63183a8f1ed333d900e87ecd579 Mon Sep 17 00:00:00 2001
From: Samuel Cormier-Iijima
Date: Sun, 6 Apr 2025 14:19:39 -0400
Subject: [PATCH 076/137] Fix error message for invalid composes selectors
(#948)
The description for this error message is backwards.
---
src/error.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/error.rs b/src/error.rs
index d936474e..4cca1069 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -410,7 +410,7 @@ pub enum PrinterErrorKind {
FmtError,
/// The CSS modules `composes` property cannot be used within nested rules.
InvalidComposesNesting,
- /// The CSS modules `composes` property cannot be used with a simple class selector.
+ /// The CSS modules `composes` property can only be used with a simple class selector.
InvalidComposesSelector,
/// The CSS modules pattern must end with `[local]` for use in CSS grid.
InvalidCssModulesPatternInGrid,
From 3ffe09e810cb56e37ab1b35265039bb324b78bc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BF=A0=20/=20green?=
Date: Mon, 7 Apr 2025 05:47:32 +0900
Subject: [PATCH 077/137] Skip generating unnecessary `@supports` (#878)
---
src/lib.rs | 555 ++++++++++++++++++++++++++++++-
src/rules/font_palette_values.rs | 2 +-
src/rules/media.rs | 2 +-
src/rules/mod.rs | 29 +-
src/rules/style.rs | 4 +-
src/rules/supports.rs | 43 ++-
src/stylesheet.rs | 4 +-
src/targets.rs | 77 ++++-
src/values/color.rs | 11 +-
9 files changed, 694 insertions(+), 33 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 47e6bbf1..104ebf62 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1476,6 +1476,33 @@ mod tests {
..Browsers::default()
},
);
+
+ prefix_test(
+ &format!(
+ r#"
+ @supports (color: lab(0% 0 0)) {{
+ .foo {{
+ {}: var(--border-width) solid lab(40% 56.6 39);
+ }}
+ }}
+ "#,
+ prop
+ ),
+ &format!(
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {{
+ .foo {{
+ {}: var(--border-width) solid lab(40% 56.6 39);
+ }}
+ }}
+ "#},
+ prop,
+ ),
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
}
prefix_test(
@@ -13655,6 +13682,27 @@ mod tests {
..Browsers::default()
},
);
+ prefix_test(
+ r#"@supports (color: lab(0% 0 0)) {
+ @font-palette-values --Cooler {
+ font-family: Handover Sans;
+ base-palette: 3;
+ override-colors: 1 var(--foo), 3 lab(50.998% 125.506 -50.7078);
+ }
+ }"#,
+ indoc! {r#"@supports (color: lab(0% 0 0)) {
+ @font-palette-values --Cooler {
+ font-family: Handover Sans;
+ base-palette: 3;
+ override-colors: 1 var(--foo), 3 lab(50.998% 125.506 -50.7078);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
minify_test(".foo { font-palette: --Custom; }", ".foo{font-palette:--Custom}");
}
@@ -15464,6 +15512,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-decoration: lab(50.998% 125.506 -50.7078) var(--style);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-decoration: lab(50.998% 125.506 -50.7078) var(--style);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -15831,6 +15900,27 @@ mod tests {
..Browsers::default()
},
);
+
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-emphasis: lab(50.998% 125.506 -50.7078) var(--style);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-emphasis: lab(50.998% 125.506 -50.7078) var(--style);
+ }
+ }
+ "#},
+ Browsers {
+ safari: Some(8 << 16),
+ ..Browsers::default()
+ },
+ );
}
#[test]
@@ -15918,6 +16008,27 @@ mod tests {
..Browsers::default()
},
);
+
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-shadow: var(--foo) 12px lab(40% 56.6 39);
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ text-shadow: var(--foo) 12px lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
}
#[test]
@@ -16628,6 +16739,27 @@ mod tests {
..Browsers::default()
},
);
+
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ caret: lab(50.998% 125.506 -50.7078) var(--foo);
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ caret: lab(50.998% 125.506 -50.7078) var(--foo);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
}
#[test]
@@ -16767,6 +16899,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ list-style: var(--foo) linear-gradient(lab(56.208% 94.4644 98.8928), lab(51% 70.4544 -115.586));
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ list-style: var(--foo) linear-gradient(lab(56.208% 94.4644 98.8928), lab(51% 70.4544 -115.586));
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
test(
r#"
.foo {
@@ -17588,6 +17741,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ background: var(--image) lab(40% 56.6 39);
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ background: var(--image) lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -17690,6 +17864,28 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ color: var(--foo, lab(40% 56.6 39));
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ color: var(--foo, lab(40% 56.6 39));
+ }
+ }
+ "#
+ },
+ Browsers {
+ safari: Some(14 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -22002,6 +22198,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -22025,6 +22242,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39) !important;
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39) !important;
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -22057,13 +22295,23 @@ mod tests {
prefix_test(
r#"
- .foo {
- --custom: lab(40% 56.6 39);
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ --custom: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39);
+ }
}
"#,
indoc! {r#"
- .foo {
- --custom: color(display-p3 .643308 .192455 .167712);
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ --custom: color(display-p3 .643308 .192455 .167712);
+ }
}
@supports (color: lab(0% 0 0)) {
@@ -22073,6 +22321,7 @@ mod tests {
}
"#},
Browsers {
+ chrome: Some(90 << 16),
safari: Some(14 << 16),
..Browsers::default()
},
@@ -22086,7 +22335,30 @@ mod tests {
"#,
indoc! {r#"
.foo {
- --custom: lab(40% 56.6 39);
+ --custom: color(display-p3 .643308 .192455 .167712);
+ }
+
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ --custom: lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ safari: Some(14 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ .foo {
+ --custom: lab(40% 56.6 39);
+ }
+ "#,
+ indoc! {r#"
+ .foo {
+ --custom: lab(40% 56.6 39);
}
"#},
Browsers {
@@ -22223,6 +22495,28 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ --foo: color(display-p3 0 1 0);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ --foo: color(display-p3 0 1 0);
+ }
+ }
+ "#},
+ Browsers {
+ safari: Some(14 << 16),
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
.foo {
@@ -22387,6 +22681,39 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: lab(40% 56.6 39);
+ }
+
+ to {
+ --custom: lab(50.998% 125.506 -50.7078);
+ }
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: lab(40% 56.6 39);
+ }
+
+ to {
+ --custom: lab(50.998% 125.506 -50.7078);
+ }
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
@keyframes foo {
@@ -22441,6 +22768,64 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: color(display-p3 .643308 .192455 .167712);
+ }
+
+ to {
+ --custom: color(display-p3 .972962 -.362078 .804206);
+ }
+ }
+ }
+
+ @supports (color: lab(0% 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: lab(40% 56.6 39);
+ }
+
+ to {
+ --custom: lab(50.998% 125.506 -50.7078);
+ }
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: color(display-p3 .643308 .192455 .167712);
+ }
+
+ to {
+ --custom: color(display-p3 .972962 -.362078 .804206);
+ }
+ }
+ }
+
+ @supports (color: lab(0% 0 0)) {
+ @keyframes foo {
+ from {
+ --custom: lab(40% 56.6 39);
+ }
+
+ to {
+ --custom: lab(50.998% 125.506 -50.7078);
+ }
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ safari: Some(14 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
r#"
@keyframes foo {
@@ -25643,6 +26028,27 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ fill: var(--url) lab(50.998% 125.506 -50.7078);
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ fill: var(--url) lab(50.998% 125.506 -50.7078);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
".foo { mask-image: linear-gradient(lch(56.208% 136.76 46.312), lch(51% 135.366 301.364)) }",
indoc! { r#"
@@ -25758,6 +26164,28 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ mask: linear-gradient(lab(56.208% 94.4644 98.8928), lab(51% 70.4544 -115.586)) 40px var(--foo);
+ }
+ }
+ "#,
+ indoc! { r#"
+ @supports (color: lab(0% 0 0)) {
+ .foo {
+ -webkit-mask: linear-gradient(lab(56.208% 94.4644 98.8928), lab(51% 70.4544 -115.586)) 40px var(--foo);
+ mask: linear-gradient(lab(56.208% 94.4644 98.8928), lab(51% 70.4544 -115.586)) 40px var(--foo);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
prefix_test(
".foo { mask: url(masks.svg#star) luminance }",
indoc! { r#"
@@ -28529,6 +28957,28 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: env(--brand-color, color(display-p3 0 1 0));
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: env(--brand-color, color(display-p3 0 1 0));
+ }
+ }
+ "#},
+ Browsers {
+ safari: Some(15 << 16),
+ chrome: Some(90 << 16),
+ ..Browsers::default()
+ },
+ );
+
css_modules_test(
r#"
@media (max-width: env(--branding-small)) {
@@ -28922,4 +29372,99 @@ mod tests {
"@layer{@view-transition{navigation:auto;types:foo bar}}",
);
}
+
+ #[test]
+ fn test_skip_generating_unnecessary_fallbacks() {
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) and (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) and (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ // NOTE: fallback for lab is not necessary
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) and (not (color: color(display-p3 0 0 0))) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) and (not (color: color(display-p3 0 0 0))) {
+ .foo {
+ color: #b32323;
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: #b32323;
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ @supports (color: lab(0% 0 0)) or (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(0% 0 0)) or (color: color(display-p3 0 0 0)) {
+ .foo {
+ color: #b32323;
+ color: lab(40% 56.6 39);
+ }
+
+ .bar {
+ color: #b32323;
+ color: color(display-p3 .643308 .192455 .167712);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+ }
}
diff --git a/src/rules/font_palette_values.rs b/src/rules/font_palette_values.rs
index 95ca014c..af06c487 100644
--- a/src/rules/font_palette_values.rs
+++ b/src/rules/font_palette_values.rs
@@ -261,7 +261,7 @@ impl<'i> FontPaletteValuesRule<'i> {
// Generate color fallbacks.
let mut fallbacks = ColorFallbackKind::empty();
for o in override_colors {
- fallbacks |= o.color.get_necessary_fallbacks(*context.targets);
+ fallbacks |= o.color.get_necessary_fallbacks(context.targets.current);
}
if fallbacks.contains(ColorFallbackKind::RGB) {
diff --git a/src/rules/media.rs b/src/rules/media.rs
index 1340bea3..c398b9b0 100644
--- a/src/rules/media.rs
+++ b/src/rules/media.rs
@@ -39,7 +39,7 @@ impl<'i, T: Clone> MediaRule<'i, T> {
self.query.transform_custom_media(self.loc, custom_media)?;
}
- self.query.transform_resolution(*context.targets);
+ self.query.transform_resolution(context.targets.current);
Ok(self.rules.0.is_empty() || self.query.never_matches())
}
}
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 4909961a..8f815bbe 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -73,7 +73,7 @@ use crate::printer::Printer;
use crate::rules::keyframes::KeyframesName;
use crate::selector::{is_compatible, is_equivalent, Component, Selector, SelectorList};
use crate::stylesheet::ParserOptions;
-use crate::targets::Targets;
+use crate::targets::TargetsWithSupportsScope;
use crate::traits::{AtRuleParser, ToCss};
use crate::values::string::CowArcStr;
use crate::vendor_prefix::VendorPrefix;
@@ -499,7 +499,7 @@ impl<'i, T: Visit<'i, T, V>, V: ?Sized + Visitor<'i, T>> Visit<'i, T, V> for Css
}
pub(crate) struct MinifyContext<'a, 'i> {
- pub targets: &'a Targets,
+ pub targets: TargetsWithSupportsScope,
pub handler: &'a mut DeclarationHandler<'i>,
pub important_handler: &'a mut DeclarationHandler<'i>,
pub handler_context: PropertyHandlerContext<'i, 'a>,
@@ -535,7 +535,8 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
macro_rules! set_prefix {
($keyframes: ident) => {
- $keyframes.vendor_prefix = context.targets.prefixes($keyframes.vendor_prefix, Feature::AtKeyframes);
+ $keyframes.vendor_prefix =
+ context.targets.current.prefixes($keyframes.vendor_prefix, Feature::AtKeyframes);
};
}
@@ -559,7 +560,7 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
set_prefix!(keyframes);
keyframe_rules.insert(keyframes.name.clone(), rules.len());
- let fallbacks = keyframes.get_fallbacks(context.targets);
+ let fallbacks = keyframes.get_fallbacks(&context.targets.current);
rules.push(rule);
rules.extend(fallbacks);
continue;
@@ -647,14 +648,14 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
// If some of the selectors in this rule are not compatible with the targets,
// we need to either wrap in :is() or split them into multiple rules.
let incompatible = if style.selectors.0.len() > 1
- && context.targets.should_compile_selectors()
- && !style.is_compatible(*context.targets)
+ && context.targets.current.should_compile_selectors()
+ && !style.is_compatible(context.targets.current)
{
// The :is() selector accepts a forgiving selector list, so use that if possible.
// Note that :is() does not allow pseudo elements, so we need to check for that.
// In addition, :is() takes the highest specificity of its arguments, so if the selectors
// have different weights, we need to split them into separate rules as well.
- if context.targets.is_compatible(crate::compat::Feature::IsSelector)
+ if context.targets.current.is_compatible(crate::compat::Feature::IsSelector)
&& !style.selectors.0.iter().any(|selector| selector.has_pseudo_element())
&& style.selectors.0.iter().map(|selector| selector.specificity()).all_equal()
{
@@ -673,7 +674,7 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
.cloned()
.partition::<[Selector; 1]>, _>(|selector| {
let list = SelectorList::new(smallvec![selector.clone()]);
- is_compatible(&list.0, *context.targets)
+ is_compatible(&list.0, context.targets.current)
});
style.selectors = SelectorList::new(compatible);
incompatible
@@ -827,7 +828,7 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
f.minify(context, parent_is_unused);
- let fallbacks = f.get_fallbacks(*context.targets);
+ let fallbacks = f.get_fallbacks(context.targets.current);
rules.push(rule);
rules.extend(fallbacks);
continue;
@@ -931,8 +932,8 @@ fn merge_style_rules<'i, T>(
) -> bool {
// Merge declarations if the selectors are equivalent, and both are compatible with all targets.
if style.selectors == last_style_rule.selectors
- && style.is_compatible(*context.targets)
- && last_style_rule.is_compatible(*context.targets)
+ && style.is_compatible(context.targets.current)
+ && last_style_rule.is_compatible(context.targets.current)
&& style.rules.0.is_empty()
&& last_style_rule.rules.0.is_empty()
&& (!context.css_modules || style.loc.source_index == last_style_rule.loc.source_index)
@@ -961,7 +962,7 @@ fn merge_style_rules<'i, T>(
{
// If the new rule is unprefixed, replace the prefixes of the last rule.
// Otherwise, add the new prefix.
- if style.vendor_prefix.contains(VendorPrefix::None) && context.targets.should_compile_selectors() {
+ if style.vendor_prefix.contains(VendorPrefix::None) && context.targets.current.should_compile_selectors() {
last_style_rule.vendor_prefix = style.vendor_prefix;
} else {
last_style_rule.vendor_prefix |= style.vendor_prefix;
@@ -970,9 +971,9 @@ fn merge_style_rules<'i, T>(
}
// Append the selectors to the last rule if the declarations are the same, and all selectors are compatible.
- if style.is_compatible(*context.targets) && last_style_rule.is_compatible(*context.targets) {
+ if style.is_compatible(context.targets.current) && last_style_rule.is_compatible(context.targets.current) {
last_style_rule.selectors.0.extend(style.selectors.0.drain(..));
- if style.vendor_prefix.contains(VendorPrefix::None) && context.targets.should_compile_selectors() {
+ if style.vendor_prefix.contains(VendorPrefix::None) && context.targets.current.should_compile_selectors() {
last_style_rule.vendor_prefix = style.vendor_prefix;
} else {
last_style_rule.vendor_prefix |= style.vendor_prefix;
diff --git a/src/rules/style.rs b/src/rules/style.rs
index d18ec4f9..851a918b 100644
--- a/src/rules/style.rs
+++ b/src/rules/style.rs
@@ -173,8 +173,8 @@ impl<'i, T> StyleRule<'i, T> {
pub(crate) fn update_prefix(&mut self, context: &mut MinifyContext<'_, 'i>) {
self.vendor_prefix = get_prefix(&self.selectors);
- if self.vendor_prefix.contains(VendorPrefix::None) && context.targets.should_compile_selectors() {
- self.vendor_prefix = downlevel_selectors(self.selectors.0.as_mut_slice(), *context.targets);
+ if self.vendor_prefix.contains(VendorPrefix::None) && context.targets.current.should_compile_selectors() {
+ self.vendor_prefix = downlevel_selectors(self.selectors.0.as_mut_slice(), context.targets.current);
}
}
}
diff --git a/src/rules/supports.rs b/src/rules/supports.rs
index 04f1fdd3..904da503 100644
--- a/src/rules/supports.rs
+++ b/src/rules/supports.rs
@@ -8,8 +8,9 @@ use crate::error::{MinifyError, ParserError, PrinterError};
use crate::parser::DefaultAtRule;
use crate::printer::Printer;
use crate::properties::PropertyId;
-use crate::targets::Targets;
+use crate::targets::{Features, FeaturesIterator, Targets};
use crate::traits::{Parse, ToCss};
+use crate::values::color::ColorFallbackKind;
use crate::values::string::CowArcStr;
use crate::vendor_prefix::VendorPrefix;
#[cfg(feature = "visitor")]
@@ -42,8 +43,19 @@ impl<'i, T: Clone> SupportsRule<'i, T> {
context: &mut MinifyContext<'_, 'i>,
parent_is_unused: bool,
) -> Result<(), MinifyError> {
- self.condition.set_prefixes_for_targets(&context.targets);
- self.rules.minify(context, parent_is_unused)
+ let inserted = context.targets.enter_supports(self.condition.get_supported_features());
+ if inserted {
+ context.handler_context.targets = context.targets.current;
+ }
+
+ self.condition.set_prefixes_for_targets(&context.targets.current);
+ let result = self.rules.minify(context, parent_is_unused);
+
+ if inserted {
+ context.targets.exit_supports();
+ context.handler_context.targets = context.targets.current;
+ }
+ result
}
}
@@ -149,6 +161,31 @@ impl<'i> SupportsCondition<'i> {
_ => {}
}
}
+
+ fn get_supported_features(&self) -> Features {
+ const COLOR_P3_SUPPORTS_CONDITION: &str = ColorFallbackKind::P3.supports_condition_value();
+ const COLOR_LAB_SUPPORTS_CONDITION: &str = ColorFallbackKind::LAB.supports_condition_value();
+ fn get_supported_features_internal(value: &SupportsCondition) -> Option {
+ match value {
+ SupportsCondition::And(list) => list.iter().map(|c| get_supported_features_internal(c)).try_union_all(),
+ SupportsCondition::Declaration { property_id, value } => match property_id {
+ PropertyId::Color => Some(match value.as_ref() {
+ COLOR_P3_SUPPORTS_CONDITION => Features::P3Colors | Features::ColorFunction,
+ COLOR_LAB_SUPPORTS_CONDITION => Features::LabColors,
+ _ => Features::empty(),
+ }),
+ _ => Some(Features::empty()),
+ },
+ // bail out if "not" or "or" exists for now
+ SupportsCondition::Not(_) | SupportsCondition::Or(_) => None,
+ SupportsCondition::Selector(_) | SupportsCondition::Unknown(_) => {
+ Some(Features::empty())
+ }
+ }
+ }
+
+ get_supported_features_internal(self).unwrap_or(Features::empty())
+ }
}
impl<'i> Parse<'i> for SupportsCondition<'i> {
diff --git a/src/stylesheet.rs b/src/stylesheet.rs
index d1746720..dcf87f1c 100644
--- a/src/stylesheet.rs
+++ b/src/stylesheet.rs
@@ -11,7 +11,7 @@ use crate::error::{Error, ErrorLocation, MinifyErrorKind, ParserError, PrinterEr
use crate::parser::{DefaultAtRule, DefaultAtRuleParser, TopLevelRuleParser};
use crate::printer::Printer;
use crate::rules::{CssRule, CssRuleList, MinifyContext};
-use crate::targets::{should_compile, Targets};
+use crate::targets::{should_compile, Targets, TargetsWithSupportsScope};
use crate::traits::{AtRuleParser, ToCss};
use crate::values::string::CowArcStr;
#[cfg(feature = "visitor")]
@@ -247,7 +247,7 @@ where
};
let mut ctx = MinifyContext {
- targets: &options.targets,
+ targets: TargetsWithSupportsScope::new(options.targets),
handler: &mut handler,
important_handler: &mut important_handler,
handler_context: context,
diff --git a/src/targets.rs b/src/targets.rs
index 8180852f..c568e285 100644
--- a/src/targets.rs
+++ b/src/targets.rs
@@ -2,6 +2,8 @@
#![allow(missing_docs)]
+use std::borrow::Borrow;
+
use crate::vendor_prefix::VendorPrefix;
use bitflags::bitflags;
#[cfg(any(feature = "serde", feature = "nodejs"))]
@@ -137,7 +139,7 @@ fn parse_version(version: &str) -> Option {
bitflags! {
/// Features to explicitly enable or disable.
- #[derive(Debug, Default, Clone, Copy)]
+ #[derive(Debug, Default, Clone, Copy, Hash, Eq, PartialEq)]
pub struct Features: u32 {
const Nesting = 1 << 0;
const NotSelectorList = 1 << 1;
@@ -166,6 +168,18 @@ bitflags! {
}
}
+pub(crate) trait FeaturesIterator: Sized + Iterator {
+ fn try_union_all(&mut self) -> Option
+ where
+ Self: Iterator
- >,
+ T: Borrow,
+ {
+ self.try_fold(Features::empty(), |a, b| b.map(|b| a | *b.borrow()))
+ }
+}
+
+impl FeaturesIterator for I where I: Iterator {}
+
/// Target browsers and features to compile.
#[derive(Debug, Clone, Copy, Default)]
pub struct Targets {
@@ -226,6 +240,67 @@ impl Targets {
}
}
+#[derive(Debug)]
+pub(crate) struct TargetsWithSupportsScope {
+ stack: Vec,
+ pub(crate) current: Targets,
+}
+
+impl TargetsWithSupportsScope {
+ pub fn new(targets: Targets) -> Self {
+ Self {
+ stack: Vec::new(),
+ current: targets,
+ }
+ }
+
+ /// Returns true if inserted
+ pub fn enter_supports(&mut self, features: Features) -> bool {
+ if features.is_empty() || self.current.exclude.contains(features) {
+ // Already excluding all features
+ return false;
+ }
+
+ let newly_excluded = features - self.current.exclude;
+ self.stack.push(newly_excluded);
+ self.current.exclude.insert(newly_excluded);
+ true
+ }
+
+ /// Should be only called if inserted
+ pub fn exit_supports(&mut self) {
+ if let Some(last) = self.stack.pop() {
+ self.current.exclude.remove(last);
+ }
+ }
+}
+
+#[test]
+fn supports_scope_correctly() {
+ let mut targets = TargetsWithSupportsScope::new(Targets::default());
+ assert!(!targets.current.exclude.contains(Features::OklabColors));
+ assert!(!targets.current.exclude.contains(Features::LabColors));
+ assert!(!targets.current.exclude.contains(Features::P3Colors));
+
+ targets.enter_supports(Features::OklabColors | Features::LabColors);
+ assert!(targets.current.exclude.contains(Features::OklabColors));
+ assert!(targets.current.exclude.contains(Features::LabColors));
+
+ targets.enter_supports(Features::P3Colors | Features::LabColors);
+ assert!(targets.current.exclude.contains(Features::OklabColors));
+ assert!(targets.current.exclude.contains(Features::LabColors));
+ assert!(targets.current.exclude.contains(Features::P3Colors));
+
+ targets.exit_supports();
+ assert!(targets.current.exclude.contains(Features::OklabColors));
+ assert!(targets.current.exclude.contains(Features::LabColors));
+ assert!(!targets.current.exclude.contains(Features::P3Colors));
+
+ targets.exit_supports();
+ assert!(!targets.current.exclude.contains(Features::OklabColors));
+ assert!(!targets.current.exclude.contains(Features::LabColors));
+}
+
macro_rules! should_compile {
($targets: expr, $feature: ident) => {
$targets.should_compile(
diff --git a/src/values/color.rs b/src/values/color.rs
index 093d5c12..8d76ba72 100644
--- a/src/values/color.rs
+++ b/src/values/color.rs
@@ -231,7 +231,7 @@ pub enum FloatColor {
bitflags! {
/// A color type that is used as a fallback when compiling colors for older browsers.
- #[derive(PartialEq, Eq, Clone, Copy)]
+ #[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub struct ColorFallbackKind: u8 {
/// An RGB color fallback.
const RGB = 0b01;
@@ -303,13 +303,16 @@ impl ColorFallbackKind {
*self | ColorFallbackKind::from_bits_truncate(self.bits() - 1)
}
- pub(crate) fn supports_condition<'i>(&self) -> SupportsCondition<'i> {
- let s = match *self {
+ pub(crate) const fn supports_condition_value(&self) -> &'static str {
+ match *self {
ColorFallbackKind::P3 => "color(display-p3 0 0 0)",
ColorFallbackKind::LAB => "lab(0% 0 0)",
_ => unreachable!(),
- };
+ }
+ }
+ pub(crate) fn supports_condition<'i>(&self) -> SupportsCondition<'i> {
+ let s = self.supports_condition_value();
SupportsCondition::Declaration {
property_id: PropertyId::Color,
value: s.into(),
From d398c1b86439dfd243a6c2ba627a8e7981118a44 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 6 Apr 2025 14:02:41 -0700
Subject: [PATCH 078/137] Detect @supports features from value, and apply
exclusions during printing
---
selectors/parser.rs | 2 +-
src/lib.rs | 63 ++++++++++++++++++++++++++++++++++++++++
src/media_query.rs | 10 +++----
src/printer.rs | 6 ++--
src/properties/custom.rs | 46 ++++++++++++++++++++++++++---
src/rules/container.rs | 10 +++----
src/rules/style.rs | 2 +-
src/rules/supports.rs | 31 +++++++++++---------
src/selector.rs | 4 +--
src/values/calc.rs | 2 +-
src/values/color.rs | 51 +++++++++++++++++++++++++-------
src/values/gradient.rs | 2 +-
src/values/image.rs | 4 +--
src/values/resolution.rs | 2 +-
14 files changed, 185 insertions(+), 50 deletions(-)
diff --git a/selectors/parser.rs b/selectors/parser.rs
index e97d5347..85c118bc 100644
--- a/selectors/parser.rs
+++ b/selectors/parser.rs
@@ -3394,7 +3394,7 @@ pub mod tests {
}
}
- fn parse<'i>(input: &'i str) -> Result, SelectorParseError<'i>> {
+ fn parse<'i>(input: &'i str) -> Result<'i, DummySelectorImpl>, SelectorParseError<'i>> {
parse_ns(input, &DummyParser::default())
}
diff --git a/src/lib.rs b/src/lib.rs
index 104ebf62..64441fab 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29404,6 +29404,69 @@ mod tests {
},
);
+ prefix_test(
+ r#"
+ @supports (color: lab(40% 56.6 39)) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: lab(40% 56.6 39)) {
+ .foo {
+ color: lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ @supports (background-color: lab(40% 56.6 39)) {
+ .foo {
+ background-color: lab(40% 56.6 39);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (background-color: lab(40% 56.6 39)) {
+ .foo {
+ background-color: lab(40% 56.6 39);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+
+ prefix_test(
+ r#"
+ @supports (color: light-dark(#f00, #00f)) {
+ .foo {
+ color: light-dark(#ff0, #0ff);
+ }
+ }
+ "#,
+ indoc! {r#"
+ @supports (color: light-dark(#f00, #00f)) {
+ .foo {
+ color: light-dark(#ff0, #0ff);
+ }
+ }
+ "#},
+ Browsers {
+ chrome: Some(4 << 16),
+ ..Browsers::default()
+ },
+ );
+
// NOTE: fallback for lab is not necessary
prefix_test(
r#"
diff --git a/src/media_query.rs b/src/media_query.rs
index d90d3b0b..dbb42f40 100644
--- a/src/media_query.rs
+++ b/src/media_query.rs
@@ -754,12 +754,12 @@ where
{
let mut iter = conditions.iter();
let first = iter.next().unwrap();
- to_css_with_parens_if_needed(first, dest, first.needs_parens(Some(operator), &dest.targets))?;
+ to_css_with_parens_if_needed(first, dest, first.needs_parens(Some(operator), &dest.targets.current))?;
for item in iter {
dest.write_char(' ')?;
operator.to_css(dest)?;
dest.write_char(' ')?;
- to_css_with_parens_if_needed(item, dest, item.needs_parens(Some(operator), &dest.targets))?;
+ to_css_with_parens_if_needed(item, dest, item.needs_parens(Some(operator), &dest.targets.current))?;
}
Ok(())
@@ -787,7 +787,7 @@ impl<'i> ToCss for MediaCondition<'i> {
negated.to_css(dest)
} else {
dest.write_str("not ")?;
- to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
+ to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets.current))
}
}
MediaCondition::Operation {
@@ -1087,7 +1087,7 @@ impl<'i, FeatureId: FeatureToCss> ToCss for QueryFeature<'i, FeatureId> {
}
QueryFeature::Range { name, operator, value } => {
// If range syntax is unsupported, use min/max prefix if possible.
- if should_compile!(dest.targets, MediaRangeSyntax) {
+ if should_compile!(dest.targets.current, MediaRangeSyntax) {
return write_min_max(operator, name, value, dest, false);
}
@@ -1103,7 +1103,7 @@ impl<'i, FeatureId: FeatureToCss> ToCss for QueryFeature<'i, FeatureId> {
end,
end_operator,
} => {
- if should_compile!(dest.targets, MediaIntervalSyntax) {
+ if should_compile!(dest.targets.current, MediaIntervalSyntax) {
write_min_max(&start_operator.opposite(), name, start, dest, true)?;
dest.write_str(" and ")?;
return write_min_max(end_operator, name, end, dest, true);
diff --git a/src/printer.rs b/src/printer.rs
index a51c1491..8b5e8f48 100644
--- a/src/printer.rs
+++ b/src/printer.rs
@@ -5,7 +5,7 @@ use crate::dependencies::{Dependency, DependencyOptions};
use crate::error::{Error, ErrorLocation, PrinterError, PrinterErrorKind};
use crate::rules::{Location, StyleContext};
use crate::selector::SelectorList;
-use crate::targets::Targets;
+use crate::targets::{Targets, TargetsWithSupportsScope};
use crate::vendor_prefix::VendorPrefix;
use cssparser::{serialize_identifier, serialize_name};
#[cfg(feature = "sourcemap")]
@@ -77,7 +77,7 @@ pub struct Printer<'a, 'b, 'c, W> {
line: u32,
col: u32,
pub(crate) minify: bool,
- pub(crate) targets: Targets,
+ pub(crate) targets: TargetsWithSupportsScope,
/// Vendor prefix override. When non-empty, it overrides
/// the vendor prefix of whatever is being printed.
pub(crate) vendor_prefix: VendorPrefix,
@@ -108,7 +108,7 @@ impl<'a, 'b, 'c, W: std::fmt::Write + Sized> Printer<'a, 'b, 'c, W> {
line: 0,
col: 0,
minify: options.minify,
- targets: options.targets,
+ targets: TargetsWithSupportsScope::new(options.targets),
vendor_prefix: VendorPrefix::empty(),
in_calc: false,
css_module: None,
diff --git a/src/properties/custom.rs b/src/properties/custom.rs
index 702fb724..824bc5b7 100644
--- a/src/properties/custom.rs
+++ b/src/properties/custom.rs
@@ -7,7 +7,7 @@ use crate::printer::Printer;
use crate::properties::PropertyId;
use crate::rules::supports::SupportsCondition;
use crate::stylesheet::ParserOptions;
-use crate::targets::{should_compile, Targets};
+use crate::targets::{should_compile, Features, Targets};
use crate::traits::{Parse, ParseWithOptions, ToCss};
use crate::values::angle::Angle;
use crate::values::color::{
@@ -1176,6 +1176,44 @@ impl<'i> TokenList<'i> {
res
}
+ pub(crate) fn get_features(&self) -> Features {
+ let mut features = Features::empty();
+ for token in &self.0 {
+ match token {
+ TokenOrValue::Color(color) => {
+ features |= color.get_features();
+ }
+ TokenOrValue::UnresolvedColor(unresolved_color) => {
+ features |= Features::SpaceSeparatedColorNotation;
+ match unresolved_color {
+ UnresolvedColor::LightDark { light, dark } => {
+ features |= Features::LightDark;
+ features |= light.get_features();
+ features |= dark.get_features();
+ }
+ _ => {}
+ }
+ }
+ TokenOrValue::Function(f) => {
+ features |= f.arguments.get_features();
+ }
+ TokenOrValue::Var(v) => {
+ if let Some(fallback) = &v.fallback {
+ features |= fallback.get_features();
+ }
+ }
+ TokenOrValue::Env(v) => {
+ if let Some(fallback) = &v.fallback {
+ features |= fallback.get_features();
+ }
+ }
+ _ => {}
+ }
+ }
+
+ features
+ }
+
/// Substitutes variables with the provided values.
#[cfg(feature = "substitute_variables")]
#[cfg_attr(docsrs, doc(cfg(feature = "substitute_variables")))]
@@ -1605,7 +1643,7 @@ impl<'i> UnresolvedColor<'i> {
match self {
UnresolvedColor::RGB { r, g, b, alpha } => {
- if should_compile!(dest.targets, SpaceSeparatedColorNotation) {
+ if should_compile!(dest.targets.current, SpaceSeparatedColorNotation) {
dest.write_str("rgba(")?;
c(r).to_css(dest)?;
dest.delim(',', false)?;
@@ -1629,7 +1667,7 @@ impl<'i> UnresolvedColor<'i> {
dest.write_char(')')
}
UnresolvedColor::HSL { h, s, l, alpha } => {
- if should_compile!(dest.targets, SpaceSeparatedColorNotation) {
+ if should_compile!(dest.targets.current, SpaceSeparatedColorNotation) {
dest.write_str("hsla(")?;
h.to_css(dest)?;
dest.delim(',', false)?;
@@ -1653,7 +1691,7 @@ impl<'i> UnresolvedColor<'i> {
dest.write_char(')')
}
UnresolvedColor::LightDark { light, dark } => {
- if should_compile!(dest.targets, LightDark) {
+ if should_compile!(dest.targets.current, LightDark) {
dest.write_str("var(--lightningcss-light")?;
dest.delim(',', false)?;
light.to_css(dest, is_custom_property)?;
diff --git a/src/rules/container.rs b/src/rules/container.rs
index b5f5bd1a..75378c3c 100644
--- a/src/rules/container.rs
+++ b/src/rules/container.rs
@@ -218,7 +218,7 @@ impl<'i> ToCss for ContainerCondition<'i> {
ContainerCondition::Feature(ref f) => f.to_css(dest),
ContainerCondition::Not(ref c) => {
dest.write_str("not ")?;
- to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
+ to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets.current))
}
ContainerCondition::Operation {
ref conditions,
@@ -243,7 +243,7 @@ impl<'i> ToCss for StyleQuery<'i> {
StyleQuery::Property(ref f) => f.to_css(dest),
StyleQuery::Not(ref c) => {
dest.write_str("not ")?;
- to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets))
+ to_css_with_parens_if_needed(&**c, dest, c.needs_parens(None, &dest.targets.current))
}
StyleQuery::Operation {
ref conditions,
@@ -313,10 +313,10 @@ impl<'a, 'i, T: ToCss> ToCss for ContainerRule<'i, T> {
}
// Don't downlevel range syntax in container queries.
- let exclude = dest.targets.exclude;
- dest.targets.exclude.insert(Features::MediaQueries);
+ let exclude = dest.targets.current.exclude;
+ dest.targets.current.exclude.insert(Features::MediaQueries);
self.condition.to_css(dest)?;
- dest.targets.exclude = exclude;
+ dest.targets.current.exclude = exclude;
dest.whitespace()?;
dest.write_char('{')?;
diff --git a/src/rules/style.rs b/src/rules/style.rs
index 851a918b..36a629f6 100644
--- a/src/rules/style.rs
+++ b/src/rules/style.rs
@@ -245,7 +245,7 @@ impl<'a, 'i, T: ToCss> StyleRule<'i, T> {
W: std::fmt::Write,
{
// If supported, or there are no targets, preserve nesting. Otherwise, write nested rules after parent.
- let supports_nesting = self.rules.0.is_empty() || !should_compile!(dest.targets, Nesting);
+ let supports_nesting = self.rules.0.is_empty() || !should_compile!(dest.targets.current, Nesting);
let len = self.declarations.declarations.len() + self.declarations.important_declarations.len();
let has_declarations = supports_nesting || len > 0 || self.rules.0.is_empty();
diff --git a/src/rules/supports.rs b/src/rules/supports.rs
index 904da503..a8deccd1 100644
--- a/src/rules/supports.rs
+++ b/src/rules/supports.rs
@@ -7,10 +7,10 @@ use super::{CssRuleList, MinifyContext};
use crate::error::{MinifyError, ParserError, PrinterError};
use crate::parser::DefaultAtRule;
use crate::printer::Printer;
+use crate::properties::custom::TokenList;
use crate::properties::PropertyId;
use crate::targets::{Features, FeaturesIterator, Targets};
use crate::traits::{Parse, ToCss};
-use crate::values::color::ColorFallbackKind;
use crate::values::string::CowArcStr;
use crate::vendor_prefix::VendorPrefix;
#[cfg(feature = "visitor")]
@@ -72,7 +72,13 @@ impl<'a, 'i, T: ToCss> ToCss for SupportsRule<'i, T> {
dest.write_char('{')?;
dest.indent();
dest.newline()?;
+
+ let inserted = dest.targets.enter_supports(self.condition.get_supported_features());
self.rules.to_css(dest)?;
+ if inserted {
+ dest.targets.exit_supports();
+ }
+
dest.dedent();
dest.newline()?;
dest.write_char('}')
@@ -163,24 +169,21 @@ impl<'i> SupportsCondition<'i> {
}
fn get_supported_features(&self) -> Features {
- const COLOR_P3_SUPPORTS_CONDITION: &str = ColorFallbackKind::P3.supports_condition_value();
- const COLOR_LAB_SUPPORTS_CONDITION: &str = ColorFallbackKind::LAB.supports_condition_value();
fn get_supported_features_internal(value: &SupportsCondition) -> Option {
match value {
SupportsCondition::And(list) => list.iter().map(|c| get_supported_features_internal(c)).try_union_all(),
- SupportsCondition::Declaration { property_id, value } => match property_id {
- PropertyId::Color => Some(match value.as_ref() {
- COLOR_P3_SUPPORTS_CONDITION => Features::P3Colors | Features::ColorFunction,
- COLOR_LAB_SUPPORTS_CONDITION => Features::LabColors,
- _ => Features::empty(),
- }),
- _ => Some(Features::empty()),
- },
+ SupportsCondition::Declaration { value, .. } => {
+ let mut input = ParserInput::new(&value);
+ let mut parser = Parser::new(&mut input);
+ if let Ok(tokens) = TokenList::parse(&mut parser, &Default::default(), 0) {
+ Some(tokens.get_features())
+ } else {
+ Some(Features::empty())
+ }
+ }
// bail out if "not" or "or" exists for now
SupportsCondition::Not(_) | SupportsCondition::Or(_) => None,
- SupportsCondition::Selector(_) | SupportsCondition::Unknown(_) => {
- Some(Features::empty())
- }
+ SupportsCondition::Selector(_) | SupportsCondition::Unknown(_) => Some(Features::empty()),
}
}
diff --git a/src/selector.rs b/src/selector.rs
index f376048c..28cb1836 100644
--- a/src/selector.rs
+++ b/src/selector.rs
@@ -1371,7 +1371,7 @@ where
let mut combinators = selector.iter_raw_match_order().rev().filter_map(|x| x.as_combinator());
let compound_selectors = selector.iter_raw_match_order().as_slice().split(|x| x.is_combinator()).rev();
- let should_compile_nesting = should_compile!(dest.targets, Nesting);
+ let should_compile_nesting = should_compile!(dest.targets.current, Nesting);
let mut first = true;
let mut combinators_exhausted = false;
@@ -1681,7 +1681,7 @@ where
} else {
// If there is no context, we are at the root if nesting is supported. This is equivalent to :scope.
// Otherwise, if nesting is supported, serialize the nesting selector directly.
- if should_compile!(dest.targets, Nesting) {
+ if should_compile!(dest.targets.current, Nesting) {
dest.write_str(":scope")
} else {
dest.write_char('&')
diff --git a/src/values/calc.rs b/src/values/calc.rs
index 8c0c5e4f..22303967 100644
--- a/src/values/calc.rs
+++ b/src/values/calc.rs
@@ -161,7 +161,7 @@ impl + TrySign + Clone + std::fmt::Deb
}
MathFunction::Clamp(a, b, c) => {
// If clamp() is unsupported by targets, output min()/max()
- if should_compile!(dest.targets, ClampFunction) {
+ if should_compile!(dest.targets.current, ClampFunction) {
dest.write_str("max(")?;
a.to_css(dest)?;
dest.delim(',', false)?;
diff --git a/src/values/color.rs b/src/values/color.rs
index 8d76ba72..3edf8447 100644
--- a/src/values/color.rs
+++ b/src/values/color.rs
@@ -12,7 +12,7 @@ use crate::macros::enum_property;
use crate::printer::Printer;
use crate::properties::PropertyId;
use crate::rules::supports::SupportsCondition;
-use crate::targets::{should_compile, Browsers, Targets};
+use crate::targets::{should_compile, Browsers, Features, Targets};
use crate::traits::{FallbackValues, IsCompatible, Parse, ToCss};
#[cfg(feature = "visitor")]
use crate::visitor::{Visit, VisitTypes, Visitor};
@@ -231,7 +231,7 @@ pub enum FloatColor {
bitflags! {
/// A color type that is used as a fallback when compiling colors for older browsers.
- #[derive(Debug, PartialEq, Eq, Clone, Copy)]
+ #[derive(PartialEq, Eq, Clone, Copy)]
pub struct ColorFallbackKind: u8 {
/// An RGB color fallback.
const RGB = 0b01;
@@ -303,16 +303,13 @@ impl ColorFallbackKind {
*self | ColorFallbackKind::from_bits_truncate(self.bits() - 1)
}
- pub(crate) const fn supports_condition_value(&self) -> &'static str {
- match *self {
+ pub(crate) fn supports_condition<'i>(&self) -> SupportsCondition<'i> {
+ let s = match *self {
ColorFallbackKind::P3 => "color(display-p3 0 0 0)",
ColorFallbackKind::LAB => "lab(0% 0 0)",
_ => unreachable!(),
- }
- }
+ };
- pub(crate) fn supports_condition<'i>(&self) -> SupportsCondition<'i> {
- let s = self.supports_condition_value();
SupportsCondition::Declaration {
property_id: PropertyId::Color,
value: s.into(),
@@ -447,6 +444,40 @@ impl CssColor {
_ => unreachable!(),
}
}
+
+ pub(crate) fn get_features(&self) -> Features {
+ let mut features = Features::empty();
+ match self {
+ CssColor::LAB(labcolor) => match &**labcolor {
+ LABColor::LAB(_) | LABColor::LCH(_) => {
+ features |= Features::LabColors;
+ }
+ LABColor::OKLAB(_) | LABColor::OKLCH(_) => {
+ features |= Features::OklabColors;
+ }
+ },
+ CssColor::Predefined(predefined_color) => {
+ features |= Features::ColorFunction;
+ match &**predefined_color {
+ PredefinedColor::DisplayP3(_) => {
+ features |= Features::P3Colors;
+ }
+ _ => {}
+ }
+ }
+ CssColor::Float(_) => {
+ features |= Features::SpaceSeparatedColorNotation;
+ }
+ CssColor::LightDark(light, dark) => {
+ features |= Features::LightDark;
+ features |= light.get_features();
+ features |= dark.get_features();
+ }
+ _ => {}
+ }
+
+ features
+ }
}
impl IsCompatible for CssColor {
@@ -545,7 +576,7 @@ impl ToCss for CssColor {
}
} else {
// If the #rrggbbaa syntax is not supported by the browser targets, output rgba()
- if should_compile!(dest.targets, HexAlphaColors) {
+ if should_compile!(dest.targets.current, HexAlphaColors) {
// If the browser doesn't support `#rrggbbaa` color syntax, it is converted to `transparent` when compressed(minify = true).
// https://www.w3.org/TR/css-color-4/#transparent-black
if dest.minify && color.red == 0 && color.green == 0 && color.blue == 0 && color.alpha == 0 {
@@ -598,7 +629,7 @@ impl ToCss for CssColor {
CssColor::from(srgb).to_css(dest)
}
CssColor::LightDark(light, dark) => {
- if should_compile!(dest.targets, LightDark) {
+ if should_compile!(dest.targets.current, LightDark) {
dest.write_str("var(--lightningcss-light")?;
dest.delim(',', false)?;
light.to_css(dest)?;
diff --git a/src/values/gradient.rs b/src/values/gradient.rs
index fec51938..6ee45f52 100644
--- a/src/values/gradient.rs
+++ b/src/values/gradient.rs
@@ -971,7 +971,7 @@ where
// Use double position stop if the last stop is the same color and all targets support it.
if let Some(prev) = last {
- if !should_compile!(dest.targets, DoublePositionGradients) {
+ if !should_compile!(dest.targets.current, DoublePositionGradients) {
match (prev, item) {
(
GradientItem::ColorStop(ColorStop {
diff --git a/src/values/image.rs b/src/values/image.rs
index e6ca26c5..4964c98c 100644
--- a/src/values/image.rs
+++ b/src/values/image.rs
@@ -478,9 +478,9 @@ impl<'i> ImageSetOption<'i> {
// Safari only supports the x resolution unit in image-set().
// In other places, x was added as an alias later.
// Temporarily ignore the targets while printing here.
- let targets = std::mem::take(&mut dest.targets);
+ let targets = std::mem::take(&mut dest.targets.current);
self.resolution.to_css(dest)?;
- dest.targets = targets;
+ dest.targets.current = targets;
if let Some(file_type) = &self.file_type {
dest.write_str(" type(")?;
diff --git a/src/values/resolution.rs b/src/values/resolution.rs
index b28e531c..ddd78dce 100644
--- a/src/values/resolution.rs
+++ b/src/values/resolution.rs
@@ -73,7 +73,7 @@ impl ToCss for Resolution {
Resolution::Dpi(dpi) => (*dpi, "dpi"),
Resolution::Dpcm(dpcm) => (*dpcm, "dpcm"),
Resolution::Dppx(dppx) => {
- if dest.targets.is_compatible(Feature::XResolutionUnit) {
+ if dest.targets.current.is_compatible(Feature::XResolutionUnit) {
(*dppx, "x")
} else {
(*dppx, "dppx")
From 6c465c123deb549dfb45fd3558f25dca0dbde0d6 Mon Sep 17 00:00:00 2001
From: Devon Govett
Date: Sun, 13 Apr 2025 16:15:58 -0700
Subject: [PATCH 079/137] Update nesting implementation for new spec
Fixes #806, fixes #941, fixes #781, fixes #612
The spec now allows mixing declarations and rules (https://drafts.csswg.org/css-nesting/#mixing), and nesting declarations in at-rules when the parent style rule has pseudo elements (https://drafts.csswg.org/css-nesting/#nested-declarations-rule).
---
napi/src/transformer.rs | 1 +
node/ast.d.ts | 17 +++++++
src/declaration.rs | 65 +++++++++++++++++++++++---
src/lib.rs | 101 ++++++++++++++++++++++++++++++++++------
src/parser.rs | 54 ++++++++++++++-------
src/printer.rs | 13 ++++++
src/rules/mod.rs | 14 +++++-
src/rules/nesting.rs | 74 +++++++++++++++++++++++++++++
src/rules/style.rs | 41 ++++------------
9 files changed, 309 insertions(+), 71 deletions(-)
diff --git a/napi/src/transformer.rs b/napi/src/transformer.rs
index de4f5075..29875b87 100644
--- a/napi/src/transformer.rs
+++ b/napi/src/transformer.rs
@@ -311,6 +311,7 @@ impl<'i> Visitor<'i, AtRule<'i>> for JsVisitor {
CssRule::Scope(..) => "scope",
CssRule::MozDocument(..) => "moz-document",
CssRule::Nesting(..) => "nesting",
+ CssRule::NestedDeclarations(..) => "nested-declarations",
CssRule::Viewport(..) => "viewport",
CssRule::StartingStyle(..) => "starting-style",
CssRule::ViewTransition(..) => "view-transition",
diff --git a/node/ast.d.ts b/node/ast.d.ts
index 5e7ad008..08d9d786 100644
--- a/node/ast.d.ts
+++ b/node/ast.d.ts
@@ -61,6 +61,10 @@ export type Rule = | {
type: "nesting";
value: NestingRule;
}
+| {
+ type: "nested-declarations";
+ value: NestedDeclarationsRule;
+ }
| {
type: "viewport";
value: ViewportRule;
@@ -9523,6 +9527,19 @@ export interface NestingRule {
*/
style: StyleRule;
}
+/**
+ * A [nested declarations](https://drafts.csswg.org/css-nesting/#nested-declarations-rule) rule.
+ */
+export interface NestedDeclarationsRule {
+ /**
+ * The style rule that defines the selector and declarations for the `@nest` rule.
+ */
+ declarations: DeclarationBlock;
+ /**
+ * The location of the rule in the source file.
+ */
+ loc: Location2;
+}
/**
* A [@viewport](https://drafts.csswg.org/css-device-adapt/#atviewport-rule) rule.
*/
diff --git a/src/declaration.rs b/src/declaration.rs
index 2b211999..0dd3da61 100644
--- a/src/declaration.rs
+++ b/src/declaration.rs
@@ -4,7 +4,7 @@ use std::borrow::Cow;
use std::ops::Range;
use crate::context::{DeclarationContext, PropertyHandlerContext};
-use crate::error::{ParserError, PrinterError};
+use crate::error::{ParserError, PrinterError, PrinterErrorKind};
use crate::parser::ParserOptions;
use crate::printer::Printer;
use crate::properties::box_shadow::BoxShadowHandler;
@@ -34,6 +34,7 @@ use crate::properties::{
ui::ColorSchemeHandler,
};
use crate::properties::{Property, PropertyId};
+use crate::selector::SelectorList;
use crate::traits::{PropertyHandler, ToCss};
use crate::values::ident::DashedIdent;
use crate::values::string::CowArcStr;
@@ -41,6 +42,7 @@ use crate::values::string::CowArcStr;
use crate::visitor::Visit;
use cssparser::*;
use indexmap::IndexMap;
+use smallvec::SmallVec;
/// A CSS declaration block.
///
@@ -157,18 +159,70 @@ impl<'i> DeclarationBlock<'i> {
dest.whitespace()?;
dest.write_char('{')?;
dest.indent();
+ dest.newline()?;
+
+ self.to_css_declarations(dest, false, &parcel_selectors::SelectorList(SmallVec::new()), 0)?;
+
+ dest.dedent();
+ dest.newline()?;
+ dest.write_char('}')
+ }
+ pub(crate) fn has_printable_declarations(&self) -> bool {
+ if self.len() > 1 {
+ return true;
+ }
+
+ if self.declarations.len() == 1 {
+ !matches!(self.declarations[0], crate::properties::Property::Composes(_))
+ } else if self.important_declarations.len() == 1 {
+ !matches!(self.important_declarations[0], crate::properties::Property::Composes(_))
+ } else {
+ false
+ }
+ }
+
+ /// Writes the declarations to a CSS declaration block.
+ pub fn to_css_declarations(
+ &self,
+ dest: &mut Printer,
+ has_nested_rules: bool,
+ selectors: &SelectorList,
+ source_index: u32,
+ ) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
let mut i = 0;
let len = self.len();
macro_rules! write {
($decls: expr, $important: literal) => {
for decl in &$decls {
- dest.newline()?;
+ // The CSS modules `composes` property is handled specially, and omitted during printing.
+ // We need to add the classes it references to the list for the selectors in this rule.
+ if let crate::properties::Property::Composes(composes) = &decl {
+ if dest.is_nested() && dest.css_module.is_some() {
+ return Err(dest.error(PrinterErrorKind::InvalidComposesNesting, composes.loc));
+ }
+
+ if let Some(css_module) = &mut dest.css_module {
+ css_module
+ .handle_composes(&selectors, &composes, source_index)
+ .map_err(|e| dest.error(e, composes.loc))?;
+ continue;
+ }
+ }
+
+ if i > 0 {
+ dest.newline()?;
+ }
+
decl.to_css(dest, $important)?;
- if i != len - 1 || !dest.minify {
+ if i != len - 1 || !dest.minify || has_nested_rules {
dest.write_char(';')?;
}
+
i += 1;
}
};
@@ -176,10 +230,7 @@ impl<'i> DeclarationBlock<'i> {
write!(self.declarations, false);
write!(self.important_declarations, true);
-
- dest.dedent();
- dest.newline()?;
- dest.write_char('}')
+ Ok(())
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 64441fab..86c1500e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -24052,13 +24052,13 @@ mod tests {
}
"#,
indoc! {r#"
- .foo {
- color: red;
- }
-
.foo .bar {
color: #00f;
}
+
+ .foo {
+ color: red;
+ }
"#},
);
@@ -24072,12 +24072,16 @@ mod tests {
"#,
indoc! {r#"
article {
- color: red;
+ color: green;
}
article {
color: #00f;
}
+
+ article {
+ color: red;
+ }
"#},
);
@@ -24190,6 +24194,29 @@ mod tests {
}
"#},
);
+ nesting_test(
+ r#"
+ .foo {
+ &::before, &::after {
+ background: blue;
+ @media screen {
+ background: orange;
+ }
+ }
+ }
+ "#,
+ indoc! {r#"
+ .foo:before, .foo:after {
+ background: #00f;
+ }
+
+ @media screen {
+ .foo:before, .foo:after {
+ background: orange;
+ }
+ }
+ "#},
+ );
nesting_test_no_targets(
r#"
@@ -25225,9 +25252,7 @@ mod tests {
indoc! {r#"
.EgL3uq_box2 {
@container EgL3uq_main (width >= 0) {
- & {
- background-color: #90ee90;
- }
+ background-color: #90ee90;
}
}
"#},
@@ -25251,9 +25276,7 @@ mod tests {
indoc! {r#"
.EgL3uq_box2 {
@container main (width >= 0) {
- & {
- background-color: #90ee90;
- }
+ background-color: #90ee90;
}
}
"#},
@@ -25460,6 +25483,56 @@ mod tests {
test_project_root("/foo", "/foo/test.css", "EgL3uq");
test_project_root("/foo/bar", "/foo/bar/baz/test.css", "xLEkNW");
test_project_root("/foo", "/foo/baz/test.css", "xLEkNW");
+
+ let mut stylesheet = StyleSheet::parse(
+ r#"
+ .foo {
+ color: red;
+ .bar {
+ color: green;
+ }
+ composes: test from "foo.css";
+ }
+ "#,
+ ParserOptions {
+ filename: "test.css".into(),
+ css_modules: Some(Default::default()),
+ ..ParserOptions::default()
+ },
+ )
+ .unwrap();
+ stylesheet.minify(MinifyOptions::default()).unwrap();
+ let res = stylesheet
+ .to_css(PrinterOptions {
+ targets: Browsers {
+ chrome: Some(95 << 16),
+ ..Browsers::default()
+ }
+ .into(),
+ ..Default::default()
+ })
+ .unwrap();
+ assert_eq!(
+ res.code,
+ indoc! {r#"
+ .EgL3uq_foo {
+ color: red;
+ }
+
+ .EgL3uq_foo .EgL3uq_bar {
+ color: green;
+ }
+
+
+ "#}
+ );
+ assert_eq!(
+ res.exports.unwrap(),
+ map! {
+ "foo" => "EgL3uq_foo" "test" from "foo.css",
+ "bar" => "EgL3uq_bar"
+ }
+ );
}
#[test]
@@ -26832,7 +26905,7 @@ mod tests {
}
}
"#,
- ".foo{@scope(.bar){&{color:#ff0}}}",
+ ".foo{@scope(.bar){color:#ff0}}",
);
nesting_test(
r#"
@@ -26844,9 +26917,7 @@ mod tests {
"#,
indoc! {r#"
@scope (.bar) {
- :scope {
- color: #ff0;
- }
+ color: #ff0;
}
"#},
);
diff --git a/src/parser.rs b/src/parser.rs
index 15b78f33..b5e954bf 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -7,6 +7,7 @@ use crate::rules::container::{ContainerCondition, ContainerName, ContainerRule};
use crate::rules::font_feature_values::FontFeatureValuesRule;
use crate::rules::font_palette_values::FontPaletteValuesRule;
use crate::rules::layer::{LayerBlockRule, LayerStatementRule};
+use crate::rules::nesting::NestedDeclarationsRule;
use crate::rules::property::PropertyRule;
use crate::rules::scope::ScopeRule;
use crate::rules::starting_style::StartingStyleRule;
@@ -31,7 +32,7 @@ use crate::rules::{
unknown::UnknownAtRule,
CssRule, CssRuleList, Location,
};
-use crate::selector::{Component, SelectorList, SelectorParser};
+use crate::selector::{SelectorList, SelectorParser};
use crate::traits::Parse;
use crate::values::ident::{CustomIdent, DashedIdent};
use crate::values::string::CowArcStr;
@@ -517,19 +518,13 @@ impl<'a, 'o, 'b, 'i, T: crate::traits::AtRuleParser<'i>> NestedRuleParser<'a, 'o
};
// Declarations can be immediately within @media and @supports blocks that are nested within a parent style rule.
- // These act the same way as if they were nested within a `& { ... }` block.
+ // These are wrapped in an (invisible) NestedDeclarationsRule.
let (declarations, mut rules) = self.parse_nested(input, false)?;
if declarations.len() > 0 {
rules.0.insert(
0,
- CssRule::Style(StyleRule {
- selectors: Component::Nesting.into(),
- declarations,
- vendor_prefix: VendorPrefix::empty(),
- rules: CssRuleList(vec![]),
- loc,
- }),
+ CssRule::NestedDeclarations(NestedDeclarationsRule { declarations, loc }),
)
}
@@ -1002,13 +997,40 @@ impl<'a, 'o, 'i, T: crate::traits::AtRuleParser<'i>> cssparser::DeclarationParse
name: CowRcStr<'i>,
input: &mut cssparser::Parser<'i, 't>,
) -> Result<'i, Self::Error>> {
- parse_declaration(
- name,
- input,
- &mut self.declarations,
- &mut self.important_declarations,
- &self.options,
- )
+ if self.rules.0.is_empty() {
+ parse_declaration(
+ name,
+ input,
+ &mut self.declarations,
+ &mut self.important_declarations,
+ &self.options,
+ )
+ } else if let Some(CssRule::NestedDeclarations(last)) = self.rules.0.last_mut() {
+ parse_declaration(
+ name,
+ input,
+ &mut last.declarations.declarations,
+ &mut last.declarations.important_declarations,
+ &self.options,
+ )
+ } else {
+ let loc = self.loc(&input.state());
+ let mut nested = NestedDeclarationsRule {
+ declarations: DeclarationBlock::new(),
+ loc,
+ };
+
+ parse_declaration(
+ name,
+ input,
+ &mut nested.declarations.declarations,
+ &mut nested.declarations.important_declarations,
+ &self.options,
+ )?;
+
+ self.rules.0.push(CssRule::NestedDeclarations(nested));
+ Ok(())
+ }
}
}
diff --git a/src/printer.rs b/src/printer.rs
index 8b5e8f48..7061485e 100644
--- a/src/printer.rs
+++ b/src/printer.rs
@@ -376,6 +376,19 @@ impl<'a, 'b, 'c, W: std::fmt::Write + Sized> Printer<'a, 'b, 'c, W> {
res
}
+ pub(crate) fn with_parent_context<'a, 'b, 'c, W>) -> Result>(
+ &mut self,
+ f: F,
+ ) -> Result {
+ let parent = std::mem::take(&mut self.context);
+ if let Some(parent) = parent {
+ self.context = parent.parent;
+ }
+ let res = f(self);
+ self.context = parent;
+ res
+ }
+
pub(crate) fn context(&self) -> Option<&'a StyleContext<'a, 'b>> {
self.context.clone()
}
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 8f815bbe..4413b985 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -90,7 +90,7 @@ use itertools::Itertools;
use keyframes::KeyframesRule;
use media::MediaRule;
use namespace::NamespaceRule;
-use nesting::NestingRule;
+use nesting::{NestedDeclarationsRule, NestingRule};
use page::PageRule;
use scope::ScopeRule;
use smallvec::{smallvec, SmallVec};
@@ -164,6 +164,8 @@ pub enum CssRule<'i, R = DefaultAtRule> {
MozDocument(MozDocumentRule<'i, R>),
/// A `@nest` rule.
Nesting(NestingRule<'i, R>),
+ /// A nested declarations rule.
+ NestedDeclarations(NestedDeclarationsRule<'i>),
/// A `@viewport` rule.
Viewport(ViewportRule<'i>),
/// A `@custom-media` rule.
@@ -298,6 +300,10 @@ impl<'i, 'de: 'i, R: serde::Deserialize<'de>> serde::Deserialize<'de> for CssRul
let rule = NestingRule::deserialize(deserializer)?;
Ok(CssRule::Nesting(rule))
}
+ "nested-declarations" => {
+ let rule = NestedDeclarationsRule::deserialize(deserializer)?;
+ Ok(CssRule::NestedDeclarations(rule))
+ }
"viewport" => {
let rule = ViewportRule::deserialize(deserializer)?;
Ok(CssRule::Viewport(rule))
@@ -367,6 +373,7 @@ impl<'a, 'i, T: ToCss> ToCss for CssRule<'i, T> {
CssRule::Namespace(namespace) => namespace.to_css(dest),
CssRule::MozDocument(document) => document.to_css(dest),
CssRule::Nesting(nesting) => nesting.to_css(dest),
+ CssRule::NestedDeclarations(nested) => nested.to_css(dest),
CssRule::Viewport(viewport) => viewport.to_css(dest),
CssRule::CustomMedia(custom_media) => custom_media.to_css(dest),
CssRule::LayerStatement(layer) => layer.to_css(dest),
@@ -816,6 +823,11 @@ impl<'i, T: Clone> CssRuleList<'i, T> {
continue;
}
}
+ CssRule::NestedDeclarations(nested) => {
+ if nested.minify(context, parent_is_unused) {
+ continue;
+ }
+ }
CssRule::StartingStyle(rule) => {
if rule.minify(context, parent_is_unused)? {
continue;
diff --git a/src/rules/nesting.rs b/src/rules/nesting.rs
index 2473cc2a..679e586a 100644
--- a/src/rules/nesting.rs
+++ b/src/rules/nesting.rs
@@ -1,14 +1,20 @@
//! The `@nest` rule.
+use smallvec::SmallVec;
+
use super::style::StyleRule;
use super::Location;
use super::MinifyContext;
+use crate::context::DeclarationContext;
+use crate::declaration::DeclarationBlock;
use crate::error::{MinifyError, PrinterError};
use crate::parser::DefaultAtRule;
use crate::printer::Printer;
+use crate::targets::should_compile;
use crate::traits::ToCss;
#[cfg(feature = "visitor")]
use crate::visitor::Visit;
+
/// A [@nest](https://www.w3.org/TR/css-nesting-1/#at-nest) rule.
#[derive(Debug, PartialEq, Clone)]
#[cfg_attr(feature = "visitor", derive(Visit))]
@@ -47,3 +53,71 @@ impl<'a, 'i, T: ToCss> ToCss for NestingRule<'i, T> {
self.style.to_css(dest)
}
}
+
+/// A [nested declarations](https://drafts.csswg.org/css-nesting/#nested-declarations-rule) rule.
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(feature = "visitor", derive(Visit))]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
+#[cfg_attr(feature = "into_owned", derive(static_self::IntoOwned))]
+pub struct NestedDeclarationsRule<'i> {
+ /// The style rule that defines the selector and declarations for the `@nest` rule.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub declarations: DeclarationBlock<'i>,
+ /// The location of the rule in the source file.
+ #[cfg_attr(feature = "visitor", skip_visit)]
+ pub loc: Location,
+}
+
+impl<'i> NestedDeclarationsRule<'i> {
+ pub(crate) fn minify(&mut self, context: &mut MinifyContext<'_, 'i>, parent_is_unused: bool) -> bool {
+ if parent_is_unused {
+ return true;
+ }
+
+ context.handler_context.context = DeclarationContext::StyleRule;
+ self
+ .declarations
+ .minify(context.handler, context.important_handler, &mut context.handler_context);
+ context.handler_context.context = DeclarationContext::None;
+ return false;
+ }
+}
+
+impl<'i> ToCss for NestedDeclarationsRule<'i> {
+ fn to_css(&self, dest: &mut Printer) -> Result<(), PrinterError>
+ where
+ W: std::fmt::Write,
+ {
+ #[cfg(feature = "sourcemap")]
+ dest.add_mapping(self.loc);
+
+ if should_compile!(dest.targets.current, Nesting) {
+ if let Some(context) = dest.context() {
+ let has_printable_declarations = self.declarations.has_printable_declarations();
+ if has_printable_declarations {
+ dest.with_parent_context(|dest| context.selectors.to_css(dest))?;
+ dest.whitespace()?;
+ dest.write_char('{')?;
+ dest.indent();
+ dest.newline()?;
+ }
+
+ self
+ .declarations
+ .to_css_declarations(dest, false, &context.selectors, self.loc.source_index)?;
+
+ if has_printable_declarations {
+ dest.dedent();
+ dest.newline()?;
+ dest.write_char('}')?;
+ }
+ return Ok(());
+ }
+ }
+
+ self
+ .declarations
+ .to_css_declarations(dest, false, &parcel_selectors::SelectorList(SmallVec::new()), 0)
+ }
+}
diff --git a/src/rules/style.rs b/src/rules/style.rs
index 36a629f6..ce3cd459 100644
--- a/src/rules/style.rs
+++ b/src/rules/style.rs
@@ -8,7 +8,7 @@ use super::MinifyContext;
use crate::context::DeclarationContext;
use crate::declaration::DeclarationBlock;
use crate::error::ParserError;
-use crate::error::{MinifyError, PrinterError, PrinterErrorKind};
+use crate::error::{MinifyError, PrinterError};
use crate::parser::DefaultAtRule;
use crate::printer::Printer;
use crate::rules::CssRuleList;
@@ -256,39 +256,16 @@ impl<'a, 'i, T: ToCss> StyleRule<'i, T> {
dest.whitespace()?;
dest.write_char('{')?;
dest.indent();
-
- let mut i = 0;
- macro_rules! write {
- ($decls: ident, $important: literal) => {
- for decl in &self.declarations.$decls {
- // The CSS modules `composes` property is handled specially, and omitted during printing.
- // We need to add the classes it references to the list for the selectors in this rule.
- if let crate::properties::Property::Composes(composes) = &decl {
- if dest.is_nested() && dest.css_module.is_some() {
- return Err(dest.error(PrinterErrorKind::InvalidComposesNesting, composes.loc));
- }
-
- if let Some(css_module) = &mut dest.css_module {
- css_module
- .handle_composes(&self.selectors, &composes, self.loc.source_index)
- .map_err(|e| dest.error(e, composes.loc))?;
- continue;
- }
- }
-
- dest.newline()?;
- decl.to_css(dest, $important)?;
- if i != len - 1 || !dest.minify || (supports_nesting && !self.rules.0.is_empty()) {
- dest.write_char(';')?;
- }
-
- i += 1;
- }
- };
+ if len > 0 {
+ dest.newline()?;
}
- write!(declarations, false);
- write!(important_declarations, true);
+ self.declarations.to_css_declarations(
+ dest,
+ supports_nesting && !self.rules.0.is_empty(),
+ &self.selectors,
+ self.loc.source_index,
+ )?;
}
macro_rules! newline {
From b08d7afcd63494884c619e289c8b7576327663c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?=
Date: Mon, 21 Apr 2025 20:15:52 -0700
Subject: [PATCH 080/137] feat(parser): Improve error recovery of parser (#954)
---
src/lib.rs | 52 ++++++++++++++++++
src/media_query.rs | 119 +++++++++++++++++++++++++++++------------
src/parser.rs | 12 ++---
src/rules/container.rs | 42 ++++++++++-----
4 files changed, 174 insertions(+), 51 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 86c1500e..c89bbd76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -66,6 +66,7 @@ mod tests {
use indoc::indoc;
use pretty_assertions::assert_eq;
use std::collections::HashMap;
+ use std::sync::{Arc, RwLock};
fn test(source: &str, expected: &str) {
test_with_options(source, expected, ParserOptions::default())
@@ -236,6 +237,22 @@ mod tests {
}
}
+ fn error_recovery_test(source: &str) {
+ let warnings = Arc::new(RwLock::default());
+ let res = StyleSheet::parse(
+ &source,
+ ParserOptions {
+ error_recovery: true,
+ warnings: Some(warnings.clone()),
+ ..Default::default()
+ },
+ );
+ match res {
+ Ok(..) => {}
+ Err(e) => unreachable!("parser error should be recovered, but got {e:?}"),
+ }
+ }
+
fn css_modules_error_test(source: &str, error: ParserError) {
let res = StyleSheet::parse(
&source,
@@ -24391,6 +24408,41 @@ mod tests {
);
}
+ #[test]
+ fn test_nesting_error_recovery() {
+ error_recovery_test(
+ "
+ .container {
+ padding: 3rem;
+ @media (max-width: --styled-jsx-placeholder-0__) {
+ .responsive {
+ color: purple;
+ }
+ }
+ }
+ ",
+ );
+ }
+
+ #[test]
+ fn test_css_variable_error_recovery() {
+ error_recovery_test("
+ .container {
+ --local-var: --styled-jsx-placeholder-0__;
+ color: var(--text-color);
+ background: linear-gradient(to right, --styled-jsx-placeholder-1__, --styled-jsx-placeholder-2__);
+
+ .item {
+ transform: translate(calc(var(--x) + --styled-jsx-placeholder-3__px), calc(var(--y) + --styled-jsx-placeholder-4__px));
+ }
+
+ div {
+ margin: calc(10px + --styled-jsx-placeholder-5__px);
+ }
+ }
+ ");
+ }
+
#[test]
fn test_css_modules() {
css_modules_test(
diff --git a/src/media_query.rs b/src/media_query.rs
index dbb42f40..10657c16 100644
--- a/src/media_query.rs
+++ b/src/media_query.rs
@@ -10,7 +10,7 @@ use crate::rules::custom_media::CustomMediaRule;
use crate::rules::Location;
use crate::stylesheet::ParserOptions;
use crate::targets::{should_compile, Targets};
-use crate::traits::{Parse, ToCss};
+use crate::traits::{Parse, ParseWithOptions, ToCss};
use crate::values::ident::{DashedIdent, Ident};
use crate::values::number::{CSSInteger, CSSNumber};
use crate::values::string::CowArcStr;
@@ -51,10 +51,13 @@ impl<'i> MediaList<'i> {
}
/// Parse a media query list from CSS.
- pub fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+ pub fn parse<'t>(
+ input: &mut Parser<'i, 't>,
+ options: &ParserOptions<'_, 'i>,
+ ) -> Result<'i, ParserError<'i>>> {
let mut media_queries = vec![];
loop {
- match input.parse_until_before(Delimiter::Comma, |i| MediaQuery::parse(i)) {
+ match input.parse_until_before(Delimiter::Comma, |i| MediaQuery::parse_with_options(i, options)) {
Ok(mq) => {
media_queries.push(mq);
}
@@ -269,8 +272,11 @@ pub struct MediaQuery<'i> {
pub condition: Option<'i>>,
}
-impl<'i> Parse<'i> for MediaQuery<'i> {
- fn parse<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>> {
+impl<'i> ParseWithOptions<'i> for MediaQuery<'i> {
+ fn parse_with_options<'t>(
+ input: &mut Parser<'i, 't>,
+ options: &ParserOptions<'_, 'i>,
+ ) -> Result<'i, ParserError<'i>>> {
let (qualifier, explicit_media_type) = input
.try_parse(|input| -> Result<_, ParseError<'i, ParserError<'i>>> {
let qualifier = input.try_parse(Qualifier::parse).ok();
@@ -280,9 +286,17 @@ impl<'i> Parse<'i> for MediaQuery<'i> {
.unwrap_or_default();
let condition = if explicit_media_type.is_none() {
- Some(MediaCondition::parse_with_flags(input, QueryConditionFlags::ALLOW_OR)?)
+ Some(MediaCondition::parse_with_flags(
+ input,
+ QueryConditionFlags::ALLOW_OR,
+ options,
+ )?)
} else if input.try_parse(|i| i.expect_ident_matching("and")).is_ok() {
- Some(MediaCondition::parse_with_flags(input, QueryConditionFlags::empty())?)
+ Some(MediaCondition::parse_with_flags(
+ input,
+ QueryConditionFlags::empty(),
+ options,
+ )?)
} else {
None
};
@@ -476,8 +490,8 @@ impl<'i, 'de: 'i> serde::Deserialize<'de> for MediaQuery<'i> {
condition,
}),
MediaQueryOrRaw::Raw { raw } => {
- let res =
- MediaQuery::parse_string(raw.as_ref()).map_err(|_| serde::de::Error::custom("Could not parse value"))?;
+ let res = MediaQuery::parse_string_with_options(raw.as_ref(), ParserOptions::default())
+ .map_err(|_| serde::de::Error::custom("Could not parse value"))?;
Ok(res.into_owned())
}
}
@@ -524,10 +538,16 @@ pub enum MediaCondition<'i> {
/// A trait for conditions such as media queries and container queries.
pub(crate) trait QueryCondition<'i>: Sized {
- fn parse_feature<'t>(input: &mut Parser<'i, 't>) -> Result<'i, ParserError<'i>>>;
+ fn parse_feature<'t>(
+ input: &mut Parser<'i, 't>,
+ options: &ParserOptions<'_, 'i>,
+ ) -> Result