Skip to content

Commit

Permalink
feat(css/parser): Support @starting-style (#7677)
Browse files Browse the repository at this point in the history
  • Loading branch information
CGQAQ committed Jul 20, 2023
1 parent c61dd52 commit cfb7b51
Show file tree
Hide file tree
Showing 7 changed files with 853 additions and 0 deletions.
1 change: 1 addition & 0 deletions crates/swc_atoms/words.txt
Expand Up @@ -2213,6 +2213,7 @@ src
srcdoc
srcset
start
starting-style
startOffset
startoffset
static
Expand Down
@@ -0,0 +1,10 @@
@starting-style {
h1 {
background-color: transparent;
}
@layer foo {
div {
height: 100px;
}
}
}
@@ -0,0 +1 @@
@starting-style{h1{background-color:transparent}@layer foo{div{height:100px}}}
18 changes: 18 additions & 0 deletions crates/swc_css_parser/src/parser/at_rules/mod.rs
Expand Up @@ -413,6 +413,17 @@ where

None
}
js_word!("starting-style") => {
self.input.skip_ws();

if !is!(self, EOF) {
let span = self.input.cur_span();

return Err(Error::new(span, ErrorKind::Expected("'{' token")));
}

None
}
_ => {
return Err(Error::new(Default::default(), ErrorKind::Ignore));
}
Expand Down Expand Up @@ -738,6 +749,13 @@ where

declaration_list
}
js_word!("starting-style") => {
let rule_list = self.parse_as::<Vec<Rule>>()?;
let rule_list: Vec<ComponentValue> =
rule_list.into_iter().map(ComponentValue::from).collect();

rule_list
}
_ => {
return Err(Error::new(Default::default(), ErrorKind::Ignore));
}
Expand Down
@@ -0,0 +1,10 @@
@starting-style {
h1 {
background-color: transparent;
}
@layer foo {
div {
height: 100px;
}
}
}

1 comment on commit cfb7b51

@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: cfb7b51 Previous: 9893bd2 Ratio
es/full/bugs-1 295932 ns/iter (± 6798) 282562 ns/iter (± 8571) 1.05
es/full/minify/libraries/antd 1301564837 ns/iter (± 35555424) 1311567857 ns/iter (± 14060782) 0.99
es/full/minify/libraries/d3 282772643 ns/iter (± 7392357) 279466498 ns/iter (± 4713009) 1.01
es/full/minify/libraries/echarts 1088087332 ns/iter (± 15891341) 1060415095 ns/iter (± 11723971) 1.03
es/full/minify/libraries/jquery 85826277 ns/iter (± 1356703) 85457549 ns/iter (± 277183) 1.00
es/full/minify/libraries/lodash 99722592 ns/iter (± 796098) 99144430 ns/iter (± 253060) 1.01
es/full/minify/libraries/moment 50242869 ns/iter (± 470282) 50068428 ns/iter (± 118820) 1.00
es/full/minify/libraries/react 18096705 ns/iter (± 51074) 18088115 ns/iter (± 219200) 1.00
es/full/minify/libraries/terser 218413307 ns/iter (± 820119) 223709682 ns/iter (± 2674946) 0.98
es/full/minify/libraries/three 381897870 ns/iter (± 3040161) 385385992 ns/iter (± 2636769) 0.99
es/full/minify/libraries/typescript 2666836629 ns/iter (± 19075023) 2646593756 ns/iter (± 12609079) 1.01
es/full/minify/libraries/victory 554532368 ns/iter (± 3409470) 557718948 ns/iter (± 4592059) 0.99
es/full/minify/libraries/vue 119864806 ns/iter (± 395297) 120517143 ns/iter (± 391068) 0.99
es/full/codegen/es3 33817 ns/iter (± 145) 34193 ns/iter (± 79) 0.99
es/full/codegen/es5 33801 ns/iter (± 157) 34271 ns/iter (± 68) 0.99
es/full/codegen/es2015 33890 ns/iter (± 110) 34209 ns/iter (± 51) 0.99
es/full/codegen/es2016 33937 ns/iter (± 113) 34233 ns/iter (± 89) 0.99
es/full/codegen/es2017 34070 ns/iter (± 161) 34184 ns/iter (± 99) 1.00
es/full/codegen/es2018 33857 ns/iter (± 146) 34200 ns/iter (± 86) 0.99
es/full/codegen/es2019 33873 ns/iter (± 145) 34236 ns/iter (± 89) 0.99
es/full/codegen/es2020 33944 ns/iter (± 156) 34276 ns/iter (± 62) 0.99
es/full/all/es3 172978993 ns/iter (± 837866) 173443920 ns/iter (± 875437) 1.00
es/full/all/es5 165318664 ns/iter (± 822826) 165949268 ns/iter (± 618715) 1.00
es/full/all/es2015 124817111 ns/iter (± 667778) 125217356 ns/iter (± 685180) 1.00
es/full/all/es2016 123281504 ns/iter (± 907584) 124100878 ns/iter (± 690187) 0.99
es/full/all/es2017 122569176 ns/iter (± 729127) 123762636 ns/iter (± 867461) 0.99
es/full/all/es2018 120811498 ns/iter (± 782893) 121907575 ns/iter (± 822109) 0.99
es/full/all/es2019 119619810 ns/iter (± 712528) 120477953 ns/iter (± 521984) 0.99
es/full/all/es2020 115338262 ns/iter (± 728595) 116321465 ns/iter (± 566233) 0.99
es/full/parser 531398 ns/iter (± 5317) 535292 ns/iter (± 6547) 0.99
es/full/base/fixer 20045 ns/iter (± 201) 19671 ns/iter (± 193) 1.02
es/full/base/resolver_and_hygiene 84506 ns/iter (± 240) 85403 ns/iter (± 195) 0.99
serialization of serde 302 ns/iter (± 0) 297 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 29393044 ns/iter (± 197650) 29450853 ns/iter (± 293183) 1.00
css/visitor/compare/clone 1667426 ns/iter (± 8551) 1712964 ns/iter (± 5514) 0.97
css/visitor/compare/visit_mut_span 1770897 ns/iter (± 7363) 1845178 ns/iter (± 7347) 0.96
css/visitor/compare/visit_mut_span_panic 1879008 ns/iter (± 9773) 1929647 ns/iter (± 11333) 0.97
css/visitor/compare/fold_span 2583650 ns/iter (± 19365) 2577912 ns/iter (± 15981) 1.00
css/visitor/compare/fold_span_panic 2745667 ns/iter (± 11838) 2762036 ns/iter (± 7186) 0.99
css/lexer/bootstrap_5_1_3 4403433 ns/iter (± 8155) 4648705 ns/iter (± 5983) 0.95
css/lexer/foundation_6_7_4 3697923 ns/iter (± 2050) 3920893 ns/iter (± 2237) 0.94
css/lexer/tailwind_3_1_1 706490 ns/iter (± 690) 746962 ns/iter (± 475) 0.95
css/parser/bootstrap_5_1_3 19345468 ns/iter (± 69058) 19148589 ns/iter (± 183229) 1.01
css/parser/foundation_6_7_4 15411558 ns/iter (± 79615) 15316124 ns/iter (± 27611) 1.01
css/parser/tailwind_3_1_1 2990400 ns/iter (± 4814) 2913435 ns/iter (± 1789) 1.03
es/codegen/colors 718937 ns/iter (± 393640) 733440 ns/iter (± 400781) 0.98
es/codegen/large 2890336 ns/iter (± 1546557) 2892828 ns/iter (± 1523784) 1.00
es/codegen/with-parser/colors 44958 ns/iter (± 543) 44390 ns/iter (± 489) 1.01
es/codegen/with-parser/large 486083 ns/iter (± 869) 489356 ns/iter (± 1004) 0.99
es/minify/libraries/antd 1148463490 ns/iter (± 16339552) 1191048973 ns/iter (± 25907467) 0.96
es/minify/libraries/d3 239390647 ns/iter (± 760714) 253950864 ns/iter (± 2733798) 0.94
es/minify/libraries/echarts 905536515 ns/iter (± 5427861) 942066026 ns/iter (± 25397536) 0.96
es/minify/libraries/jquery 73833313 ns/iter (± 196639) 74734139 ns/iter (± 622753) 0.99
es/minify/libraries/lodash 88335813 ns/iter (± 254425) 88751083 ns/iter (± 410413) 1.00
es/minify/libraries/moment 43514854 ns/iter (± 45420) 44056787 ns/iter (± 179257) 0.99
es/minify/libraries/react 16128248 ns/iter (± 100675) 16110327 ns/iter (± 56418) 1.00
es/minify/libraries/terser 187424614 ns/iter (± 706846) 188590373 ns/iter (± 995434) 0.99
es/minify/libraries/three 319867503 ns/iter (± 1065265) 321850788 ns/iter (± 6200601) 0.99
es/minify/libraries/typescript 2269629486 ns/iter (± 10947239) 2303840812 ns/iter (± 14029014) 0.99
es/minify/libraries/victory 468869012 ns/iter (± 3833002) 470896067 ns/iter (± 2118189) 1.00
es/minify/libraries/vue 106884395 ns/iter (± 345045) 107778331 ns/iter (± 359206) 0.99
es/visitor/compare/clone 1958301 ns/iter (± 7390) 1988596 ns/iter (± 5063) 0.98
es/visitor/compare/visit_mut_span 2286287 ns/iter (± 3336) 2320506 ns/iter (± 3757) 0.99
es/visitor/compare/visit_mut_span_panic 2326847 ns/iter (± 4667) 2374276 ns/iter (± 4902) 0.98
es/visitor/compare/fold_span 3346269 ns/iter (± 7533) 3431068 ns/iter (± 5499) 0.98
es/visitor/compare/fold_span_panic 3496479 ns/iter (± 5885) 3550606 ns/iter (± 6234) 0.98
es/lexer/colors 12507 ns/iter (± 28) 12830 ns/iter (± 45) 0.97
es/lexer/angular 6003190 ns/iter (± 8948) 6082089 ns/iter (± 14273) 0.99
es/lexer/backbone 780947 ns/iter (± 436) 811715 ns/iter (± 509) 0.96
es/lexer/jquery 4389655 ns/iter (± 3026) 4470623 ns/iter (± 1870) 0.98
es/lexer/jquery mobile 6722074 ns/iter (± 2707) 6851123 ns/iter (± 5587) 0.98
es/lexer/mootools 3482538 ns/iter (± 2263) 3567117 ns/iter (± 970) 0.98
es/lexer/underscore 660481 ns/iter (± 423) 671197 ns/iter (± 2523) 0.98
es/lexer/three 20685525 ns/iter (± 13950) 21191589 ns/iter (± 16844) 0.98
es/lexer/yui 3718524 ns/iter (± 3000) 3819344 ns/iter (± 2073) 0.97
es/parser/colors 26514 ns/iter (± 57) 26579 ns/iter (± 115) 1.00
es/parser/angular 13424762 ns/iter (± 60110) 13548160 ns/iter (± 73784) 0.99
es/parser/backbone 1999485 ns/iter (± 10012) 2014529 ns/iter (± 16756) 0.99
es/parser/jquery 10818966 ns/iter (± 99328) 11130746 ns/iter (± 273555) 0.97
es/parser/jquery mobile 16612090 ns/iter (± 206908) 16853269 ns/iter (± 305301) 0.99
es/parser/mootools 8296839 ns/iter (± 14751) 8434073 ns/iter (± 34171) 0.98
es/parser/underscore 1718859 ns/iter (± 8271) 1731804 ns/iter (± 12162) 0.99
es/parser/three 48394061 ns/iter (± 208006) 47062372 ns/iter (± 883192) 1.03
es/parser/yui 8211485 ns/iter (± 39546) 8458982 ns/iter (± 102144) 0.97
es/preset-env/usage/builtin_type 136993 ns/iter (± 33108) 140797 ns/iter (± 32848) 0.97
es/preset-env/usage/property 17038 ns/iter (± 53) 17337 ns/iter (± 82) 0.98
es/resolver/typescript 88561385 ns/iter (± 1326955) 89646556 ns/iter (± 792110) 0.99
es/fixer/typescript 63041631 ns/iter (± 510992) 63910581 ns/iter (± 1407895) 0.99
es/hygiene/typescript 132408110 ns/iter (± 1464565) 141563577 ns/iter (± 3380799) 0.94
es/resolver_with_hygiene/typescript 247619809 ns/iter (± 4222855) 254923448 ns/iter (± 5560414) 0.97
es/visitor/base-perf/module_clone 60839 ns/iter (± 198) 66772 ns/iter (± 254) 0.91
es/visitor/base-perf/fold_empty 64874 ns/iter (± 231) 69335 ns/iter (± 218) 0.94
es/visitor/base-perf/fold_noop_impl_all 64381 ns/iter (± 127) 69415 ns/iter (± 291) 0.93
es/visitor/base-perf/fold_noop_impl_vec 64113 ns/iter (± 329) 69595 ns/iter (± 604) 0.92
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 58 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 39 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_boxed 108 ns/iter (± 0) 106 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed 77 ns/iter (± 0) 76 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2563 ns/iter (± 26) 2511 ns/iter (± 11) 1.02
es/base/parallel/resolver/typescript 4553916385 ns/iter (± 282789671) 4298767888 ns/iter (± 271960910) 1.06
es/base/parallel/hygiene/typescript 1494436077 ns/iter (± 23213067) 1496829585 ns/iter (± 30879364) 1.00
misc/visitors/time-complexity/time 5 138 ns/iter (± 1) 136 ns/iter (± 2) 1.01
misc/visitors/time-complexity/time 10 394 ns/iter (± 3) 383 ns/iter (± 12) 1.03
misc/visitors/time-complexity/time 15 728 ns/iter (± 2) 679 ns/iter (± 5) 1.07
misc/visitors/time-complexity/time 20 915 ns/iter (± 67) 1066 ns/iter (± 6) 0.86
misc/visitors/time-complexity/time 40 3565 ns/iter (± 16) 3480 ns/iter (± 33) 1.02
misc/visitors/time-complexity/time 60 7220 ns/iter (± 14) 7251 ns/iter (± 15) 1.00
es/full-target/es2016 233009 ns/iter (± 733) 239617 ns/iter (± 1001) 0.97
es/full-target/es2017 221130 ns/iter (± 998) 227381 ns/iter (± 722) 0.97
es/full-target/es2018 209593 ns/iter (± 433) 216011 ns/iter (± 531) 0.97
es2020_nullish_coalescing 68034 ns/iter (± 320) 71437 ns/iter (± 432) 0.95
es2020_optional_chaining 78691 ns/iter (± 224) 81462 ns/iter (± 303) 0.97
es2022_class_properties 117361 ns/iter (± 368) 120193 ns/iter (± 520) 0.98
es2018_object_rest_spread 71936 ns/iter (± 114) 75172 ns/iter (± 371) 0.96
es2019_optional_catch_binding 61242 ns/iter (± 281) 63280 ns/iter (± 299) 0.97
es2017_async_to_generator 62244 ns/iter (± 121) 64568 ns/iter (± 162) 0.96
es2016_exponentiation 66186 ns/iter (± 363) 68636 ns/iter (± 190) 0.96
es2015_arrow 69505 ns/iter (± 157) 71420 ns/iter (± 294) 0.97
es2015_block_scoped_fn 66605 ns/iter (± 162) 69049 ns/iter (± 203) 0.96
es2015_block_scoping 120977 ns/iter (± 304) 124073 ns/iter (± 507) 0.98

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

Please sign in to comment.