From be440efe8feeaab7351cf3a27d58a1f062bcabf0 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sun, 9 Apr 2023 22:09:18 -0400 Subject: [PATCH] Update compat data --- package.json | 2 +- scripts/build-prefixes.js | 20 ++++- src/compat.rs | 182 ++++++++++++++++++++++++++++++-------- src/prefixes.rs | 51 +++-------- yarn.lock | 27 +++--- 5 files changed, 185 insertions(+), 97 deletions(-) diff --git a/package.json b/package.json index 29410fa6..31d9875a 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@codemirror/theme-one-dark": "^6.1.0", "@mdn/browser-compat-data": "^5.2.49", "@napi-rs/cli": "^2.14.0", - "autoprefixer": "^10.4.13", + "autoprefixer": "^10.4.14", "codemirror": "^6.0.1", "cssnano": "^5.0.8", "esbuild": "^0.13.10", diff --git a/scripts/build-prefixes.js b/scripts/build-prefixes.js index 24c1267e..e2689dad 100644 --- a/scripts/build-prefixes.js +++ b/scripts/build-prefixes.js @@ -226,7 +226,19 @@ let mdnFeatures = { placeItems: mdn.css.properties['place-items'].__compat.support, overflowShorthand: mdn.css.properties['overflow'].multiple_keywords.__compat.support, mediaRangeSyntax: mdn.css['at-rules'].media.range_syntax.__compat.support, - mediaIntervalSyntax: {}, // currently no browsers + mediaIntervalSyntax: Object.fromEntries( + Object.entries(mdn.css['at-rules'].media.range_syntax.__compat.support) + .map(([browser, value]) => { + // Firefox supported only ranges and not intervals for a while. + if (Array.isArray(value)) { + value = value.filter(v => !v.partial_implementation) + } else if (value.partial_implementation) { + value = undefined; + } + + return [browser, value]; + }) + ), logicalBorders: mdn.css.properties['border-inline-start'].__compat.support, logicalBorderShorthand: mdn.css.properties['border-inline'].__compat.support, logicalBorderRadius: mdn.css.properties['border-start-start-radius'].__compat.support, @@ -238,7 +250,7 @@ let mdnFeatures = { logicalSize: mdn.css.properties['inline-size'].__compat.support, logicalTextAlign: mdn.css.properties['text-align']['flow_relative_values_start_and_end'].__compat.support, labColors: mdn.css.types.color.lab.__compat.support, - oklabColors: {}, + oklabColors: mdn.css.types.color.oklab.__compat.support, colorFunction: mdn.css.types.color.color.__compat.support, spaceSeparatedColorFunction: mdn.css.types.color.rgb.space_separated_parameters.__compat.support, textDecorationThicknessPercent: mdn.css.properties['text-decoration-thickness'].percentage.__compat.support, @@ -276,8 +288,8 @@ for (let feature in mdnFeatures) { let feat = mdnFeatures[feature][name]; let version; if (Array.isArray(feat)) { - version = feat.filter(x => x.version_added && !x.alternative_name).sort((a, b) => parseVersion(a.version_added) < parseVersion(b.version_added) ? -1 : 1)[0].version_added; - } else { + version = feat.filter(x => x.version_added && !x.alternative_name && !x.flags).sort((a, b) => parseVersion(a.version_added) < parseVersion(b.version_added) ? -1 : 1)[0].version_added; + } else if (!feat.alternative_name && !feat.flags) { version = feat.version_added; } diff --git a/src/compat.rs b/src/compat.rs index e3c9a685..de4d0456 100644 --- a/src/compat.rs +++ b/src/compat.rs @@ -293,7 +293,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -385,7 +385,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -430,7 +430,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -449,13 +449,21 @@ impl Feature { return false; } } + if let Some(version) = browsers.safari { + if version < 1049600 { + return false; + } + } + if let Some(version) = browsers.ios_saf { + if version < 1049600 { + return false; + } + } if browsers.android.is_some() || browsers.chrome.is_some() || browsers.edge.is_some() || browsers.ie.is_some() - || browsers.ios_saf.is_some() || browsers.opera.is_some() - || browsers.safari.is_some() || browsers.samsung.is_some() { return false; @@ -493,7 +501,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -538,7 +546,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -583,7 +591,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -628,7 +636,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -720,7 +728,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -765,7 +773,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -794,6 +802,11 @@ impl Feature { return false; } } + if let Some(version) = browsers.safari { + if version < 1049600 { + return false; + } + } if let Some(version) = browsers.opera { if version < 786688 { return false; @@ -804,11 +817,7 @@ impl Feature { return false; } } - if browsers.android.is_some() - || browsers.ie.is_some() - || browsers.ios_saf.is_some() - || browsers.safari.is_some() - { + if browsers.android.is_some() || browsers.ie.is_some() || browsers.ios_saf.is_some() { return false; } } @@ -839,7 +848,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -884,7 +893,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -974,7 +983,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1019,7 +1028,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1137,7 +1146,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1182,7 +1191,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1195,8 +1204,31 @@ impl Feature { return false; } } - Feature::CssNesting | Feature::CustomMediaQueries | Feature::MediaIntervalSyntax | Feature::OklabColors => { - return false + Feature::CssNesting => { + if let Some(version) = browsers.chrome { + if version < 7340032 { + return false; + } + } + if let Some(version) = browsers.safari { + if version < 1049856 { + return false; + } + } + if let Some(version) = browsers.ios_saf { + if version < 1049856 { + return false; + } + } + if browsers.android.is_some() + || browsers.edge.is_some() + || browsers.firefox.is_some() + || browsers.ie.is_some() + || browsers.opera.is_some() + || browsers.samsung.is_some() + { + return false; + } } Feature::CssNotSelList => { if let Some(version) = browsers.edge { @@ -1230,7 +1262,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1270,11 +1302,16 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } - if browsers.firefox.is_some() || browsers.ie.is_some() || browsers.samsung.is_some() { + if let Some(version) = browsers.samsung { + if version < 1310720 { + return false; + } + } + if browsers.firefox.is_some() || browsers.ie.is_some() { return false; } } @@ -1310,7 +1347,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version < 7077888 { + if version < 7274496 { return false; } } @@ -1323,6 +1360,7 @@ impl Feature { return false; } } + Feature::CustomMediaQueries => return false, Feature::DoublePositionGradients => { if let Some(version) = browsers.chrome { if version < 4653056 { @@ -1583,6 +1621,51 @@ impl Feature { return false; } } + Feature::MediaIntervalSyntax => { + if let Some(version) = browsers.chrome { + if version < 6815744 { + return false; + } + } + if let Some(version) = browsers.edge { + if version < 6815744 { + return false; + } + } + if let Some(version) = browsers.firefox { + if version < 6684672 { + return false; + } + } + if let Some(version) = browsers.opera { + if version < 4653056 { + return false; + } + } + if let Some(version) = browsers.safari { + if version < 1049600 { + return false; + } + } + if let Some(version) = browsers.ios_saf { + if version < 1049600 { + return false; + } + } + if let Some(version) = browsers.samsung { + if version < 1310720 { + return false; + } + } + if let Some(version) = browsers.android { + if version < 6815744 { + return false; + } + } + if browsers.ie.is_some() { + return false; + } + } Feature::LogicalBorders => { if let Some(version) = browsers.chrome { if version < 4521984 { @@ -1909,11 +1992,6 @@ impl Feature { return false; } } - if let Some(version) = browsers.firefox { - if version < 7274496 { - return false; - } - } if let Some(version) = browsers.opera { if version < 6356992 { return false; @@ -1934,11 +2012,11 @@ impl Feature { return false; } } - if browsers.ie.is_some() || browsers.samsung.is_some() { + if browsers.firefox.is_some() || browsers.ie.is_some() || browsers.samsung.is_some() { return false; } } - Feature::ColorFunction => { + Feature::OklabColors => { if let Some(version) = browsers.chrome { if version < 7274496 { return false; @@ -1949,7 +2027,37 @@ impl Feature { return false; } } - if let Some(version) = browsers.firefox { + if let Some(version) = browsers.opera { + if version < 6356992 { + return false; + } + } + if let Some(version) = browsers.safari { + if version < 984064 { + return false; + } + } + if let Some(version) = browsers.ios_saf { + if version < 984064 { + return false; + } + } + if let Some(version) = browsers.android { + if version < 7274496 { + return false; + } + } + if browsers.firefox.is_some() || browsers.ie.is_some() || browsers.samsung.is_some() { + return false; + } + } + Feature::ColorFunction => { + if let Some(version) = browsers.chrome { + if version < 7274496 { + return false; + } + } + if let Some(version) = browsers.edge { if version < 7274496 { return false; } @@ -1974,7 +2082,7 @@ impl Feature { return false; } } - if browsers.ie.is_some() || browsers.samsung.is_some() { + if browsers.firefox.is_some() || browsers.ie.is_some() || browsers.samsung.is_some() { return false; } } diff --git a/src/prefixes.rs b/src/prefixes.rs index a8626b55..48bf8997 100644 --- a/src/prefixes.rs +++ b/src/prefixes.rs @@ -788,7 +788,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 262144 && version <= 7143424 { + if version >= 262144 { prefixes |= VendorPrefix::WebKit; } } @@ -806,9 +806,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1025,7 +1022,7 @@ impl Feature { } } if let Some(version) = browsers.safari { - if version >= 327936 { + if version >= 327936 && version <= 1049344 { prefixes |= VendorPrefix::WebKit; } } @@ -1109,7 +1106,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1124,9 +1121,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1198,7 +1192,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1218,9 +1212,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1285,7 +1276,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1300,9 +1291,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1424,7 +1412,7 @@ impl Feature { } Feature::TextSizeAdjust => { if let Some(version) = browsers.firefox { - if version >= 7143424 { + if version == 7208960 { prefixes |= VendorPrefix::Moz; } } @@ -1464,7 +1452,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 131328 && version <= 7143424 { + if version >= 131328 { prefixes |= VendorPrefix::WebKit; } } @@ -1479,9 +1467,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1536,7 +1521,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1551,9 +1536,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1864,12 +1846,12 @@ impl Feature { } Feature::ImageSet => { if let Some(version) = browsers.chrome { - if version >= 1376256 && version <= 7143424 { + if version >= 1376256 && version <= 7340032 { prefixes |= VendorPrefix::WebKit; } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1884,9 +1866,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -1946,7 +1925,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -1961,9 +1940,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } @@ -2184,7 +2160,7 @@ impl Feature { } } if let Some(version) = browsers.android { - if version >= 263168 && version <= 7143424 { + if version >= 263168 { prefixes |= VendorPrefix::WebKit; } } @@ -2204,9 +2180,6 @@ impl Feature { } } if let Some(version) = browsers.opera { - if version == 4784128 { - prefixes |= VendorPrefix::O; - } if version >= 983040 { prefixes |= VendorPrefix::WebKit; } diff --git a/yarn.lock b/yarn.lock index 561f1322..1a5b8857 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1020,13 +1020,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -autoprefixer@^10.4.13: - version "10.4.13" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" - integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== +autoprefixer@^10.4.14: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001426" + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" @@ -1093,7 +1093,7 @@ browserslist@^4.0.0, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4 node-releases "^2.0.6" update-browserslist-db "^1.0.5" -browserslist@^4.21.4: +browserslist@^4.21.5: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== @@ -1149,15 +1149,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.30001370: - version "1.0.30001439" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz" - integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A== - -caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: - version "1.0.30001451" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" - integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001477" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001477.tgz#a2ffb2276258233034bbb869d4558b02658a511e" + integrity sha512-lZim4iUHhGcy5p+Ri/G7m84hJwncj+Kz7S5aD4hoQfslKZJgt0tHc/hafVbqHC5bbhHb+mrW2JOUHkI5KH7toQ== chalk@^2.0.0: version "2.4.2"