Skip to content

Commit

Permalink
feat(css/parser): Normalize keyframe selectors (#6688)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Dec 20, 2022
1 parent 10491d1 commit d7a0524
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 6 deletions.
2 changes: 1 addition & 1 deletion crates/swc_css_minifier/src/compressor/keyframes.rs
Expand Up @@ -34,7 +34,7 @@ impl Compressor {

pub(super) fn compress_keyframe_selector(&mut self, keyframe_selector: &mut KeyframeSelector) {
match keyframe_selector {
KeyframeSelector::Ident(i) if i.value.eq_ignore_ascii_case(&js_word!("from")) => {
KeyframeSelector::Ident(i) if i.value == js_word!("from") => {
*keyframe_selector = KeyframeSelector::Percentage(Percentage {
span: i.span,
value: Number {
Expand Down
7 changes: 4 additions & 3 deletions crates/swc_css_parser/src/parser/at_rules/mod.rs
Expand Up @@ -896,10 +896,11 @@ where
fn parse(&mut self) -> PResult<KeyframeSelector> {
match cur!(self) {
tok!("ident") => {
let ident: Ident = self.parse()?;
let normalized_ident_value = ident.value.to_ascii_lowercase();
let mut ident: Ident = self.parse()?;

if &*normalized_ident_value != "from" && &*normalized_ident_value != "to" {
ident.value = ident.value.to_ascii_lowercase();

if ident.value != js_word!("from") && ident.value != js_word!("to") {
return Err(Error::new(
ident.span,
ErrorKind::Expected("'from' or 'to' idents"),
Expand Down
Expand Up @@ -1513,7 +1513,7 @@
"end": 686,
"ctxt": 0
},
"value": "fRoM",
"value": "from",
"raw": "fRoM"
}
],
Expand Down Expand Up @@ -1611,7 +1611,7 @@
"end": 737,
"ctxt": 0
},
"value": "tO",
"value": "to",
"raw": "tO"
}
],
Expand Down

1 comment on commit d7a0524

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: d7a0524 Previous: 7f8ba9c Ratio
es/full/bugs-1 281894 ns/iter (± 12647) 307829 ns/iter (± 18074) 0.92
es/full/minify/libraries/antd 1747683438 ns/iter (± 32277679) 1644195078 ns/iter (± 20261062) 1.06
es/full/minify/libraries/d3 313998357 ns/iter (± 6537948) 322299011 ns/iter (± 8935344) 0.97
es/full/minify/libraries/echarts 1352555035 ns/iter (± 9872639) 1254157208 ns/iter (± 15922734) 1.08
es/full/minify/libraries/jquery 90916746 ns/iter (± 833065) 90833039 ns/iter (± 1722279) 1.00
es/full/minify/libraries/lodash 108221149 ns/iter (± 762505) 106375375 ns/iter (± 2089813) 1.02
es/full/minify/libraries/moment 52775565 ns/iter (± 244305) 53453483 ns/iter (± 1129289) 0.99
es/full/minify/libraries/react 19105607 ns/iter (± 205988) 19214912 ns/iter (± 181206) 0.99
es/full/minify/libraries/terser 251074601 ns/iter (± 2208764) 254631350 ns/iter (± 6007925) 0.99
es/full/minify/libraries/three 455734918 ns/iter (± 10022643) 448383306 ns/iter (± 5503926) 1.02
es/full/minify/libraries/typescript 3220925710 ns/iter (± 12998155) 3118093939 ns/iter (± 30848244) 1.03
es/full/minify/libraries/victory 702726368 ns/iter (± 18947486) 726015306 ns/iter (± 20943350) 0.97
es/full/minify/libraries/vue 130872886 ns/iter (± 1041518) 134676531 ns/iter (± 2587272) 0.97
es/full/codegen/es3 27013 ns/iter (± 39) 28714 ns/iter (± 66) 0.94
es/full/codegen/es5 27050 ns/iter (± 46) 28771 ns/iter (± 40) 0.94
es/full/codegen/es2015 27069 ns/iter (± 56) 28788 ns/iter (± 77) 0.94
es/full/codegen/es2016 27056 ns/iter (± 74) 28775 ns/iter (± 59) 0.94
es/full/codegen/es2017 27036 ns/iter (± 62) 28786 ns/iter (± 35) 0.94
es/full/codegen/es2018 27004 ns/iter (± 30) 28792 ns/iter (± 77) 0.94
es/full/codegen/es2019 27030 ns/iter (± 160) 28770 ns/iter (± 65) 0.94
es/full/codegen/es2020 26993 ns/iter (± 63) 28781 ns/iter (± 75) 0.94
es/full/all/es3 163292708 ns/iter (± 3110257) 171568686 ns/iter (± 5870716) 0.95
es/full/all/es5 157272651 ns/iter (± 2022729) 166012262 ns/iter (± 1464318) 0.95
es/full/all/es2015 117580645 ns/iter (± 459595) 126572321 ns/iter (± 3521122) 0.93
es/full/all/es2016 116712437 ns/iter (± 1024360) 124183521 ns/iter (± 3206545) 0.94
es/full/all/es2017 116160327 ns/iter (± 375151) 121993239 ns/iter (± 1713190) 0.95
es/full/all/es2018 114587866 ns/iter (± 1079942) 121836472 ns/iter (± 3328403) 0.94
es/full/all/es2019 113866966 ns/iter (± 747991) 122683241 ns/iter (± 1983709) 0.93
es/full/all/es2020 109009517 ns/iter (± 587777) 114686981 ns/iter (± 3719157) 0.95
es/full/parser 501524 ns/iter (± 7450) 512058 ns/iter (± 7584) 0.98
es/full/base/fixer 21990 ns/iter (± 34) 22207 ns/iter (± 19) 0.99
es/full/base/resolver_and_hygiene 78170 ns/iter (± 89) 78344 ns/iter (± 60) 1.00
serialization of ast node 118 ns/iter (± 0) 119 ns/iter (± 0) 0.99
serialization of serde 122 ns/iter (± 0) 122 ns/iter (± 0) 1
css/minify/libraries/bootstrap 27016319 ns/iter (± 158005) 27224886 ns/iter (± 63227) 0.99
css/visitor/compare/clone 2089355 ns/iter (± 9372) 2066168 ns/iter (± 15164) 1.01
css/visitor/compare/visit_mut_span 2270884 ns/iter (± 2111) 2280028 ns/iter (± 10157) 1.00
css/visitor/compare/visit_mut_span_panic 2327189 ns/iter (± 4156) 2315405 ns/iter (± 3268) 1.01
css/visitor/compare/fold_span 2989187 ns/iter (± 30090) 3006032 ns/iter (± 10249) 0.99
css/visitor/compare/fold_span_panic 3123304 ns/iter (± 38996) 3181058 ns/iter (± 39701) 0.98
css/lexer/bootstrap_5_1_3 5238278 ns/iter (± 3284) 5220335 ns/iter (± 19772) 1.00
css/lexer/foundation_6_7_4 4444288 ns/iter (± 1429) 4439432 ns/iter (± 699) 1.00
css/lexer/tailwind_3_1_1 834752 ns/iter (± 460) 830731 ns/iter (± 224) 1.00
css/parser/bootstrap_5_1_3 21028533 ns/iter (± 53388) 20855056 ns/iter (± 77947) 1.01
css/parser/foundation_6_7_4 16773266 ns/iter (± 37797) 16634175 ns/iter (± 38147) 1.01
css/parser/tailwind_3_1_1 3239673 ns/iter (± 3760) 3201830 ns/iter (± 1769) 1.01
es/codegen/colors 328879 ns/iter (± 184252) 329363 ns/iter (± 185182) 1.00
es/codegen/large 1199386 ns/iter (± 604064) 1178722 ns/iter (± 619855) 1.02
es/codegen/with-parser/colors 46605 ns/iter (± 266) 46642 ns/iter (± 443) 1.00
es/codegen/with-parser/large 510905 ns/iter (± 1116) 512546 ns/iter (± 1682) 1.00
es/minify/libraries/antd 1503007287 ns/iter (± 13169784) 1464427837 ns/iter (± 16242073) 1.03
es/minify/libraries/d3 256329664 ns/iter (± 4409302) 268537747 ns/iter (± 4810191) 0.95
es/minify/libraries/echarts 1131107489 ns/iter (± 23443877) 1113211318 ns/iter (± 15165662) 1.02
es/minify/libraries/jquery 77856469 ns/iter (± 358961) 79666629 ns/iter (± 960641) 0.98
es/minify/libraries/lodash 94868891 ns/iter (± 1364610) 98196463 ns/iter (± 1551383) 0.97
es/minify/libraries/moment 45692647 ns/iter (± 349825) 47094250 ns/iter (± 857083) 0.97
es/minify/libraries/react 16768568 ns/iter (± 140637) 17464498 ns/iter (± 294822) 0.96
es/minify/libraries/terser 211968460 ns/iter (± 2317131) 219281029 ns/iter (± 2919532) 0.97
es/minify/libraries/three 386064863 ns/iter (± 12007711) 382540543 ns/iter (± 5085206) 1.01
es/minify/libraries/typescript 2779178447 ns/iter (± 19488058) 2701595866 ns/iter (± 40279949) 1.03
es/minify/libraries/victory 588107564 ns/iter (± 9888693) 598841307 ns/iter (± 12504231) 0.98
es/minify/libraries/vue 116347803 ns/iter (± 1150050) 120035667 ns/iter (± 3109842) 0.97
es/visitor/compare/clone 2413147 ns/iter (± 34200) 2402802 ns/iter (± 7650) 1.00
es/visitor/compare/visit_mut_span 2797414 ns/iter (± 3472) 2797220 ns/iter (± 9206) 1.00
es/visitor/compare/visit_mut_span_panic 2840826 ns/iter (± 3175) 2878328 ns/iter (± 18871) 0.99
es/visitor/compare/fold_span 3921644 ns/iter (± 7578) 4015253 ns/iter (± 35067) 0.98
es/visitor/compare/fold_span_panic 4072641 ns/iter (± 12181) 4180937 ns/iter (± 32170) 0.97
es/lexer/colors 17222 ns/iter (± 22) 17196 ns/iter (± 18) 1.00
es/lexer/angular 8264916 ns/iter (± 7158) 8209620 ns/iter (± 3335) 1.01
es/lexer/backbone 1076351 ns/iter (± 645) 1069230 ns/iter (± 268) 1.01
es/lexer/jquery 5992190 ns/iter (± 3403) 5937629 ns/iter (± 2215) 1.01
es/lexer/jquery mobile 9230281 ns/iter (± 4863) 9146310 ns/iter (± 10858) 1.01
es/lexer/mootools 4711578 ns/iter (± 2778) 4661926 ns/iter (± 1233) 1.01
es/lexer/underscore 900885 ns/iter (± 883) 895891 ns/iter (± 416) 1.01
es/lexer/three 28022650 ns/iter (± 33081) 27854556 ns/iter (± 13264) 1.01
es/lexer/yui 5052536 ns/iter (± 3121) 5029956 ns/iter (± 1933) 1.00
es/parser/colors 31034 ns/iter (± 138) 30808 ns/iter (± 135) 1.01
es/parser/angular 15688774 ns/iter (± 102744) 15874110 ns/iter (± 186513) 0.99
es/parser/backbone 2328317 ns/iter (± 14223) 2319629 ns/iter (± 12230) 1.00
es/parser/jquery 12738542 ns/iter (± 133008) 12647082 ns/iter (± 87244) 1.01
es/parser/jquery mobile 20180200 ns/iter (± 360122) 20275492 ns/iter (± 263623) 1.00
es/parser/mootools 9626317 ns/iter (± 37863) 9658884 ns/iter (± 37275) 1.00
es/parser/underscore 1975255 ns/iter (± 13386) 1977193 ns/iter (± 11541) 1.00
es/parser/three 60365345 ns/iter (± 553292) 59760666 ns/iter (± 466174) 1.01
es/parser/yui 9643454 ns/iter (± 58110) 9611798 ns/iter (± 34828) 1.00
es/preset-env/usage/builtin_type 144359 ns/iter (± 33574) 143920 ns/iter (± 33690) 1.00
es/preset-env/usage/property 21230 ns/iter (± 90) 20938 ns/iter (± 94) 1.01
es/resolver/typescript 119903692 ns/iter (± 2410981) 110439872 ns/iter (± 870367) 1.09
es/fixer/typescript 95533451 ns/iter (± 1173813) 87594226 ns/iter (± 998265) 1.09
es/hygiene/typescript 192597316 ns/iter (± 1378065) 171836748 ns/iter (± 1464846) 1.12
es/resolver_with_hygiene/typescript 324788794 ns/iter (± 2423629) 302605504 ns/iter (± 5194812) 1.07
es/visitor/base-perf/module_clone 75964 ns/iter (± 1088) 76017 ns/iter (± 899) 1.00
es/visitor/base-perf/fold_empty 86219 ns/iter (± 1638) 86825 ns/iter (± 1536) 0.99
es/visitor/base-perf/fold_noop_impl_all 86770 ns/iter (± 1540) 86277 ns/iter (± 1570) 1.01
es/visitor/base-perf/fold_noop_impl_vec 86969 ns/iter (± 1884) 86740 ns/iter (± 1881) 1.00
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 61 ns/iter (± 0) 59 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_boxed 106 ns/iter (± 0) 105 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 102 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3459 ns/iter (± 44) 3498 ns/iter (± 64) 0.99
es/base/parallel/resolver/typescript 5797339191 ns/iter (± 533665052) 5450015173 ns/iter (± 283282513) 1.06
es/base/parallel/hygiene/typescript 2245357476 ns/iter (± 18152234) 2059066542 ns/iter (± 29029418) 1.09
misc/visitors/time-complexity/time 5 104 ns/iter (± 0) 104 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 320 ns/iter (± 0) 320 ns/iter (± 0) 1
misc/visitors/time-complexity/time 15 656 ns/iter (± 0) 671 ns/iter (± 10) 0.98
misc/visitors/time-complexity/time 20 1238 ns/iter (± 15) 1229 ns/iter (± 9) 1.01
misc/visitors/time-complexity/time 40 6624 ns/iter (± 15) 6689 ns/iter (± 14) 0.99
misc/visitors/time-complexity/time 60 17149 ns/iter (± 102) 17067 ns/iter (± 9) 1.00
es/full-target/es2016 187310 ns/iter (± 410) 188510 ns/iter (± 497) 0.99
es/full-target/es2017 181995 ns/iter (± 573) 183282 ns/iter (± 350) 0.99
es/full-target/es2018 171805 ns/iter (± 502) 172040 ns/iter (± 490) 1.00
es2020_nullish_coalescing 66646 ns/iter (± 69) 66884 ns/iter (± 152) 1.00
es2020_optional_chaining 95400 ns/iter (± 427) 95725 ns/iter (± 273) 1.00
es2022_class_properties 94016 ns/iter (± 150) 94368 ns/iter (± 253) 1.00
es2018_object_rest_spread 71278 ns/iter (± 67) 71797 ns/iter (± 168) 0.99
es2019_optional_catch_binding 61147 ns/iter (± 80) 61767 ns/iter (± 124) 0.99
es2017_async_to_generator 61555 ns/iter (± 120) 62083 ns/iter (± 123) 0.99
es2016_exponentiation 65059 ns/iter (± 97) 65476 ns/iter (± 141) 0.99
es2015_arrow 70400 ns/iter (± 299) 70827 ns/iter (± 129) 0.99
es2015_block_scoped_fn 65936 ns/iter (± 93) 66791 ns/iter (± 232) 0.99
es2015_block_scoping 138579 ns/iter (± 238) 139175 ns/iter (± 7725) 1.00
es2015_classes 117196 ns/iter (± 424) 117739 ns/iter (± 501) 1.00
es2015_computed_props 61346 ns/iter (± 158) 61546 ns/iter (± 73) 1.00
es2015_destructuring 115538 ns/iter (± 112) 116843 ns/iter (± 326) 0.99
es2015_duplicate_keys 64193 ns/iter (± 73) 64520 ns/iter (± 102) 0.99
es2015_parameters 79364 ns/iter (± 136) 79983 ns/iter (± 190) 0.99
es2015_fn_name 66683 ns/iter (± 604) 66820 ns/iter (± 366) 1.00
es2015_for_of 64430 ns/iter (± 89) 64689 ns/iter (± 109) 1.00
es2015_instanceof 63274 ns/iter (± 83) 63499 ns/iter (± 91) 1.00
es2015_shorthand_property 61278 ns/iter (± 116) 61149 ns/iter (± 70) 1.00
es2015_spread 61043 ns/iter (± 115) 61448 ns/iter (± 128) 0.99
es2015_sticky_regex 62128 ns/iter (± 106) 62579 ns/iter (± 145) 0.99
es2015_typeof_symbol 62624 ns/iter (± 69) 62850 ns/iter (± 104) 1.00
es/transform/baseline/base 52109 ns/iter (± 96) 52120 ns/iter (± 110) 1.00
es/transform/baseline/common_reserved_word 62769 ns/iter (± 87) 63039 ns/iter (± 121) 1.00
es/transform/baseline/common_typescript 143339 ns/iter (± 3424) 169861 ns/iter (± 1104) 0.84
es/target/es3 170537 ns/iter (± 260) 170545 ns/iter (± 295) 1.00
es/target/es2015 630337 ns/iter (± 1106) 629079 ns/iter (± 966) 1.00
es/target/es2016 65134 ns/iter (± 104) 65443 ns/iter (± 112) 1.00
es/target/es2017 61706 ns/iter (± 118) 62047 ns/iter (± 91) 0.99
es/target/es2018 81266 ns/iter (± 108) 81771 ns/iter (± 156) 0.99
es/target/es2020 132106 ns/iter (± 170) 132740 ns/iter (± 348) 1.00
babelify-only 675407 ns/iter (± 618) 667851 ns/iter (± 1450) 1.01
parse_and_babelify_angular 43612425 ns/iter (± 1118823) 46248379 ns/iter (± 1221788) 0.94
parse_and_babelify_backbone 5369351 ns/iter (± 59371) 5927222 ns/iter (± 199550) 0.91
parse_and_babelify_jquery 32751748 ns/iter (± 354136) 33202903 ns/iter (± 474733) 0.99
parse_and_babelify_jquery_mobile 55868179 ns/iter (± 768084) 55027580 ns/iter (± 775055) 1.02
parse_and_babelify_mootools 34021650 ns/iter (± 343254) 33716231 ns/iter (± 377466) 1.01
parse_and_babelify_underscore 4316262 ns/iter (± 28184) 4444199 ns/iter (± 69730) 0.97
parse_and_babelify_yui 32863907 ns/iter (± 369283) 33964254 ns/iter (± 1167525) 0.97
html/minify/document/css_spec 41376327 ns/iter (± 188744) 42356215 ns/iter (± 263816) 0.98
html/minify/document/github 17178887 ns/iter (± 44945) 17348227 ns/iter (± 56035) 0.99
html/minify/document/stackoverflow 15361382 ns/iter (± 47872) 15546247 ns/iter (± 125701) 0.99
html/minify/document_fragment/css_spec 39665297 ns/iter (± 272339) 39838680 ns/iter (± 326357) 1.00
html/minify/document_fragment/github 16541044 ns/iter (± 72784) 16683019 ns/iter (± 57301) 0.99
html/minify/document_fragment/stackoverflow 14931573 ns/iter (± 48892) 15096602 ns/iter (± 51451) 0.99
html/document/visitor/compare/clone 339028 ns/iter (± 2443) 342268 ns/iter (± 2689) 0.99
html/document/visitor/compare/visit_mut_span 366107 ns/iter (± 1252) 370597 ns/iter (± 1753) 0.99
html/document/visitor/compare/visit_mut_span_panic 370147 ns/iter (± 2139) 373211 ns/iter (± 1826) 0.99
html/document/visitor/compare/fold_span 405212 ns/iter (± 1984) 406831 ns/iter (± 1911) 1.00
html/document/visitor/compare/fold_span_panic 457830 ns/iter (± 2579) 462655 ns/iter (± 2246) 0.99
html/document_fragment/visitor/compare/clone 337814 ns/iter (± 1680) 336813 ns/iter (± 1684) 1.00
html/document_fragment/visitor/compare/visit_mut_span 363584 ns/iter (± 2156) 362951 ns/iter (± 1838) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 373137 ns/iter (± 2091) 374168 ns/iter (± 2609) 1.00
html/document_fragment/visitor/compare/fold_span 402576 ns/iter (± 2812) 400525 ns/iter (± 1995) 1.01
html/document_fragment/visitor/compare/fold_span_panic 454929 ns/iter (± 1645) 458179 ns/iter (± 1551) 0.99
html/lexer/css_2021_spec 15566456 ns/iter (± 5985) 15493920 ns/iter (± 3889) 1.00
html/lexer/github_com_17_05_2022 6041230 ns/iter (± 11323) 6025022 ns/iter (± 3205) 1.00
html/lexer/stackoverflow_com_17_05_2022 5651855 ns/iter (± 2627) 5629615 ns/iter (± 3553) 1.00
html/parser/parser_document/css_2021_spec 25517808 ns/iter (± 91511) 25717954 ns/iter (± 1167647) 0.99
html/parser/parser_document/github_com_17_05_2022 8716420 ns/iter (± 36855) 8729492 ns/iter (± 3503) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7750337 ns/iter (± 4754) 7734041 ns/iter (± 36897) 1.00
html/parser/parser_document_fragment/css_2021_spec 25683871 ns/iter (± 164349) 25728867 ns/iter (± 136567) 1.00
html/parser/parser_document_fragment/github_com_17_05_2022 8737781 ns/iter (± 19985) 8773762 ns/iter (± 8010) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7658203 ns/iter (± 5051) 7695651 ns/iter (± 8288) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.