Skip to content

Commit

Permalink
feat(css/compat): Support not with multiple arguments (#6668)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Dec 19, 2022
1 parent 8008d86 commit 352896f
Show file tree
Hide file tree
Showing 6 changed files with 273 additions and 7 deletions.
18 changes: 16 additions & 2 deletions crates/swc_css_compat/src/compiler/mod.rs
@@ -1,7 +1,8 @@
use swc_common::{Spanned, DUMMY_SP};
use swc_css_ast::{
AbsoluteColorBase, AtRule, ComponentValue, MediaAnd, MediaCondition, MediaConditionAllType,
MediaConditionWithoutOr, MediaInParens, MediaQuery, Rule, SupportsCondition,
AbsoluteColorBase, AtRule, ComponentValue, CompoundSelector, MediaAnd, MediaCondition,
MediaConditionAllType, MediaConditionWithoutOr, MediaInParens, MediaQuery, Rule,
SupportsCondition,
};
use swc_css_visit::{VisitMut, VisitMutWith};

Expand All @@ -14,6 +15,7 @@ mod color_space_separated_parameters;
mod custom_media;
mod legacy_rgb_and_hsl;
mod media_query_ranges;
mod selector_not;
mod utils;

/// Compiles a modern CSS file to a CSS file which works with old browsers.
Expand Down Expand Up @@ -123,6 +125,18 @@ impl VisitMut for Compiler {
}
}

fn visit_mut_compound_selector(&mut self, n: &mut CompoundSelector) {
n.visit_mut_children_with(self);

if self.in_supports_condition {
return;
}

if self.c.process.contains(Features::SELECTOR_NOT) {
self.process_selector_not(n);
}
}

fn visit_mut_component_value(&mut self, n: &mut ComponentValue) {
n.visit_mut_children_with(self);

Expand Down
55 changes: 55 additions & 0 deletions crates/swc_css_compat/src/compiler/selector_not.rs
@@ -0,0 +1,55 @@
use swc_atoms::js_word;
use swc_css_ast::{
CompoundSelector, PseudoClassSelector, PseudoClassSelectorChildren, SelectorList,
SubclassSelector,
};

use crate::compiler::Compiler;

impl Compiler {
pub(crate) fn process_selector_not(&mut self, n: &mut CompoundSelector) {
let has_not = n.subclass_selectors.iter().any(|n| matches!(n, SubclassSelector::PseudoClass(PseudoClassSelector { name, children: Some(children), ..}) if name.value == js_word!("not")
&& matches!(children.get(0), Some(PseudoClassSelectorChildren::SelectorList(selector_list)) if selector_list.children.len() > 1)));

if !has_not {
return;
}

let mut new_subclass_selectors = Vec::with_capacity(n.subclass_selectors.len());

for selector in &mut n.subclass_selectors.drain(..) {
match selector {
SubclassSelector::PseudoClass(PseudoClassSelector {
span,
name,
children: Some(children),
..
}) if name.value == js_word!("not")
&& matches!(children.get(0), Some(PseudoClassSelectorChildren::SelectorList(selector_list)) if selector_list.children.len() > 1) =>
{
if let Some(PseudoClassSelectorChildren::SelectorList(selector_list)) =
children.get(0)
{
for child in &selector_list.children {
new_subclass_selectors.push(SubclassSelector::PseudoClass(
PseudoClassSelector {
span,
name: name.clone(),
children: Some(vec![
PseudoClassSelectorChildren::SelectorList(SelectorList {
span: child.span,
children: vec![child.clone()],
}),
]),
},
));
}
}
}
_ => new_subclass_selectors.push(selector),
}
}

n.subclass_selectors = new_subclass_selectors;
}
}
1 change: 1 addition & 0 deletions crates/swc_css_compat/src/feature.rs
Expand Up @@ -9,5 +9,6 @@ bitflags! {
const COLOR_ALPHA_PARAMETER = 1 << 4;
const COLOR_SPACE_SEPARATED_PARAMETERS = 1 << 5;
const COLOR_LEGACY_RGB_AND_HSL = 1 << 6;
const SELECTOR_NOT = 1 << 7;
}
}
26 changes: 21 additions & 5 deletions crates/swc_css_compat/tests/fixture.rs
Expand Up @@ -62,7 +62,6 @@ fn test_nesting(input: PathBuf, suffix: Option<&str>) {
};

testing::run_test(false, |cm, _| {
//
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

Expand All @@ -87,7 +86,6 @@ fn test_custom_media_query(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
//
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

Expand All @@ -109,7 +107,6 @@ fn test_media_query_ranges(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
//
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

Expand All @@ -131,7 +128,6 @@ fn test_color_hex_alpha(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
//
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

Expand All @@ -153,7 +149,6 @@ fn test_color_space_separated_function_notation(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
//
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

Expand All @@ -171,3 +166,24 @@ fn test_color_space_separated_function_notation(input: PathBuf) {
})
.unwrap();
}

#[testing::fixture("tests/selector-not/**/*.css", exclude("expect.css"))]
fn test_selector_not(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

ss.visit_mut_with(&mut Compiler::new(Config {
process: Features::SELECTOR_NOT,
}));

let s = print_stylesheet(&ss);

NormalizedOutput::from(s).compare_to_file(&output).unwrap();

Ok(())
})
.unwrap();
}
101 changes: 101 additions & 0 deletions crates/swc_css_compat/tests/selector-not/input.css
@@ -0,0 +1,101 @@
body {
order: 1;
}

body, Not {
order: 2;
}

em[attr=:not],
em[attr=":not"] {
order: 3;
}

em[attr~=:not],
em[attr~=":not"] {
order: 4;
}

em[not=abc],
em[not="abc"] {
order: 5;
}

:not {
order: 6;
}

:not(a, b) {
order: 7;
}

:nOt(a, b) {
order: 7.1;
}

tag:not(.class, .class2) {
order: 8;
}

tag :not(tag2, tag3) {
order: 9;
}

tag :not(tag2, tag3) :not(tag4, tag5) {
order: 10;
}

tag :not(tag2, tag3) :not(tag4, tag5), test {
order: 11;
}

tag :not(tag2 :not(tag4, tag5), tag3) {
order: 12;
}

.foo:not(:nth-child(-n+2), .bar) {
order: 13;
}

a:not(.b,
.c) {
order: 14;
}

.foo:not(:hover, :focus)::before {
order: 15;
}

.foo\\:not-italic {
order: 16;
}

.foo\\:not-italic:not(:hover, :focus) {
order: 17;
}

:not :dir(ltr) {
order: 18;
}

:not(something > complex, other) {
order: 19;
}

div:not([style*="(120, 60, 12"]) {
order: 20;
}

@supports selector(:not(something > complex, other)) {
:not(something > complex, other) {
order: 19;
}
}

:not(h1, h2, h3) {
color: red;
}

:not(h1) {
color: red;
}
79 changes: 79 additions & 0 deletions crates/swc_css_compat/tests/selector-not/input.expect.css
@@ -0,0 +1,79 @@
body {
order: 1;
}
body,
Not {
order: 2;
}
em[attr=:not],
em[attr=":not"] {
order: 3;
}
em[attr~=:not],
em[attr~=":not"] {
order: 4;
}
em[not=abc],
em[not="abc"] {
order: 5;
}
:not {
order: 6;
}
:not(a):not(b) {
order: 7;
}
:nOt(a):nOt(b) {
order: 7.1;
}
tag:not(.class):not(.class2) {
order: 8;
}
tag :not(tag2):not(tag3) {
order: 9;
}
tag :not(tag2):not(tag3) :not(tag4):not(tag5) {
order: 10;
}
tag :not(tag2):not(tag3) :not(tag4):not(tag5),
test {
order: 11;
}
tag :not(tag2 :not(tag4):not(tag5)):not(tag3) {
order: 12;
}
.foo:not(:nth-child(-n+2)):not(.bar) {
order: 13;
}
a:not(.b):not(.c) {
order: 14;
}
.foo:not(:hover):not(:focus)::before {
order: 15;
}
.foo\\:not-italic {
order: 16;
}
.foo\\:not-italic:not(:hover):not(:focus) {
order: 17;
}
:not :dir(ltr) {
order: 18;
}
:not(something > complex):not(other) {
order: 19;
}
div:not([style*="(120, 60, 12"]) {
order: 20;
}
@supports selector(:not(something > complex, other)) {
:not(something > complex):not(other) {
order: 19;
}
}
:not(h1):not(h2):not(h3) {
color: red;
}
:not(h1) {
color: red;
}

1 comment on commit 352896f

@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: 352896f Previous: 1d3e06a Ratio
es/full/bugs-1 301239 ns/iter (± 9571) 291483 ns/iter (± 12646) 1.03
es/full/minify/libraries/antd 1674337234 ns/iter (± 36214735) 1671935764 ns/iter (± 26253306) 1.00
es/full/minify/libraries/d3 327634262 ns/iter (± 7253185) 318424057 ns/iter (± 5011450) 1.03
es/full/minify/libraries/echarts 1297437171 ns/iter (± 27599721) 1276963386 ns/iter (± 9428292) 1.02
es/full/minify/libraries/jquery 92144995 ns/iter (± 946193) 92266057 ns/iter (± 1067706) 1.00
es/full/minify/libraries/lodash 108077101 ns/iter (± 2019069) 107886474 ns/iter (± 693554) 1.00
es/full/minify/libraries/moment 54073018 ns/iter (± 837939) 53126842 ns/iter (± 368245) 1.02
es/full/minify/libraries/react 19264511 ns/iter (± 177176) 19180238 ns/iter (± 215682) 1.00
es/full/minify/libraries/terser 250093943 ns/iter (± 6870852) 254095677 ns/iter (± 5095139) 0.98
es/full/minify/libraries/three 454234015 ns/iter (± 4661021) 458798398 ns/iter (± 5521901) 0.99
es/full/minify/libraries/typescript 3056916050 ns/iter (± 41483713) 3096933690 ns/iter (± 20747933) 0.99
es/full/minify/libraries/victory 698749673 ns/iter (± 30510223) 697455697 ns/iter (± 11209791) 1.00
es/full/minify/libraries/vue 133621908 ns/iter (± 1023955) 134014351 ns/iter (± 1301207) 1.00
es/full/codegen/es3 27492 ns/iter (± 31) 27379 ns/iter (± 53) 1.00
es/full/codegen/es5 27469 ns/iter (± 57) 27385 ns/iter (± 87) 1.00
es/full/codegen/es2015 27511 ns/iter (± 74) 27416 ns/iter (± 56) 1.00
es/full/codegen/es2016 27445 ns/iter (± 63) 27425 ns/iter (± 54) 1.00
es/full/codegen/es2017 27458 ns/iter (± 41) 27383 ns/iter (± 64) 1.00
es/full/codegen/es2018 27436 ns/iter (± 29) 27403 ns/iter (± 57) 1.00
es/full/codegen/es2019 27461 ns/iter (± 54) 27386 ns/iter (± 78) 1.00
es/full/codegen/es2020 27445 ns/iter (± 70) 27370 ns/iter (± 53) 1.00
es/full/all/es3 168639842 ns/iter (± 1786851) 164137751 ns/iter (± 4021376) 1.03
es/full/all/es5 163128001 ns/iter (± 3035697) 157967613 ns/iter (± 2008513) 1.03
es/full/all/es2015 120106386 ns/iter (± 1460834) 118619900 ns/iter (± 621522) 1.01
es/full/all/es2016 119465658 ns/iter (± 2792596) 117508896 ns/iter (± 2129552) 1.02
es/full/all/es2017 120677899 ns/iter (± 4626431) 116510315 ns/iter (± 891129) 1.04
es/full/all/es2018 117113474 ns/iter (± 1491055) 115351493 ns/iter (± 629894) 1.02
es/full/all/es2019 117042029 ns/iter (± 2395087) 114648746 ns/iter (± 1093470) 1.02
es/full/all/es2020 114025742 ns/iter (± 2552804) 109502652 ns/iter (± 638807) 1.04
es/full/parser 498604 ns/iter (± 7275) 499861 ns/iter (± 8635) 1.00
es/full/base/fixer 21698 ns/iter (± 28) 22248 ns/iter (± 47) 0.98
es/full/base/resolver_and_hygiene 78635 ns/iter (± 92) 78079 ns/iter (± 106) 1.01
serialization of ast node 119 ns/iter (± 0) 118 ns/iter (± 0) 1.01
serialization of serde 123 ns/iter (± 0) 122 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 27287585 ns/iter (± 104657) 27015081 ns/iter (± 219765) 1.01
css/visitor/compare/clone 2052182 ns/iter (± 15045) 2068843 ns/iter (± 12424) 0.99
css/visitor/compare/visit_mut_span 2258388 ns/iter (± 2853) 2274195 ns/iter (± 6344) 0.99
css/visitor/compare/visit_mut_span_panic 2325686 ns/iter (± 29099) 2323192 ns/iter (± 6983) 1.00
css/visitor/compare/fold_span 2983868 ns/iter (± 8722) 3029675 ns/iter (± 24799) 0.98
css/visitor/compare/fold_span_panic 3128027 ns/iter (± 34901) 3146619 ns/iter (± 41420) 0.99
css/lexer/bootstrap_5_1_3 5265222 ns/iter (± 2567) 5294397 ns/iter (± 1345) 0.99
css/lexer/foundation_6_7_4 4434382 ns/iter (± 3076) 4430480 ns/iter (± 1942) 1.00
css/lexer/tailwind_3_1_1 831026 ns/iter (± 1105) 832589 ns/iter (± 1064) 1.00
css/parser/bootstrap_5_1_3 20711369 ns/iter (± 38154) 20829521 ns/iter (± 76476) 0.99
css/parser/foundation_6_7_4 16572285 ns/iter (± 28250) 16567884 ns/iter (± 99304) 1.00
css/parser/tailwind_3_1_1 3195634 ns/iter (± 4020) 3176364 ns/iter (± 4244) 1.01
es/codegen/colors 329231 ns/iter (± 184557) 329680 ns/iter (± 184846) 1.00
es/codegen/large 1181443 ns/iter (± 615767) 1182777 ns/iter (± 622177) 1.00
es/codegen/with-parser/colors 46207 ns/iter (± 276) 46282 ns/iter (± 571) 1.00
es/codegen/with-parser/large 512195 ns/iter (± 2291) 509706 ns/iter (± 1189) 1.00
es/minify/libraries/antd 1411564097 ns/iter (± 14678839) 1443201278 ns/iter (± 11134617) 0.98
es/minify/libraries/d3 256356814 ns/iter (± 4883701) 263062941 ns/iter (± 4030406) 0.97
es/minify/libraries/echarts 1087723791 ns/iter (± 10734480) 1118892274 ns/iter (± 13258413) 0.97
es/minify/libraries/jquery 79008940 ns/iter (± 1154811) 79336000 ns/iter (± 707113) 1.00
es/minify/libraries/lodash 95937208 ns/iter (± 1584516) 96203524 ns/iter (± 1356989) 1.00
es/minify/libraries/moment 46638257 ns/iter (± 520513) 46132988 ns/iter (± 276261) 1.01
es/minify/libraries/react 17083344 ns/iter (± 247107) 17032411 ns/iter (± 105579) 1.00
es/minify/libraries/terser 215116669 ns/iter (± 2496508) 224684421 ns/iter (± 5263064) 0.96
es/minify/libraries/three 376058557 ns/iter (± 7284965) 386802015 ns/iter (± 11712309) 0.97
es/minify/libraries/typescript 2652502721 ns/iter (± 34651470) 2670702179 ns/iter (± 17271442) 0.99
es/minify/libraries/victory 589608381 ns/iter (± 8338969) 612550617 ns/iter (± 15456865) 0.96
es/minify/libraries/vue 118205542 ns/iter (± 1774243) 118163466 ns/iter (± 791823) 1.00
es/visitor/compare/clone 2417087 ns/iter (± 22661) 2377105 ns/iter (± 6000) 1.02
es/visitor/compare/visit_mut_span 2795801 ns/iter (± 4511) 2784082 ns/iter (± 11064) 1.00
es/visitor/compare/visit_mut_span_panic 2857263 ns/iter (± 29944) 2855541 ns/iter (± 12670) 1.00
es/visitor/compare/fold_span 3947258 ns/iter (± 8392) 3993358 ns/iter (± 15501) 0.99
es/visitor/compare/fold_span_panic 4104541 ns/iter (± 25785) 4128730 ns/iter (± 38593) 0.99
es/lexer/colors 17321 ns/iter (± 10) 17279 ns/iter (± 12) 1.00
es/lexer/angular 8249055 ns/iter (± 4106) 8252055 ns/iter (± 3146) 1.00
es/lexer/backbone 1075502 ns/iter (± 558) 1077242 ns/iter (± 880) 1.00
es/lexer/jquery 5971618 ns/iter (± 7801) 5972601 ns/iter (± 2571) 1.00
es/lexer/jquery mobile 9191642 ns/iter (± 8563) 9198875 ns/iter (± 2473) 1.00
es/lexer/mootools 4689591 ns/iter (± 6702) 4692382 ns/iter (± 1374) 1.00
es/lexer/underscore 900769 ns/iter (± 437) 899938 ns/iter (± 498) 1.00
es/lexer/three 28021713 ns/iter (± 97815) 27983400 ns/iter (± 7991) 1.00
es/lexer/yui 5051661 ns/iter (± 8290) 5068481 ns/iter (± 899) 1.00
es/parser/colors 30632 ns/iter (± 170) 30806 ns/iter (± 173) 0.99
es/parser/angular 15714458 ns/iter (± 194595) 15892215 ns/iter (± 239113) 0.99
es/parser/backbone 2316530 ns/iter (± 13103) 2345273 ns/iter (± 12319) 0.99
es/parser/jquery 12529776 ns/iter (± 98836) 12824505 ns/iter (± 91030) 0.98
es/parser/jquery mobile 20143717 ns/iter (± 181723) 20612933 ns/iter (± 286441) 0.98
es/parser/mootools 9625226 ns/iter (± 36670) 9800594 ns/iter (± 66239) 0.98
es/parser/underscore 1971046 ns/iter (± 21051) 1985133 ns/iter (± 9691) 0.99
es/parser/three 59099249 ns/iter (± 257085) 60842547 ns/iter (± 408585) 0.97
es/parser/yui 9585344 ns/iter (± 91351) 9727303 ns/iter (± 53548) 0.99
es/preset-env/usage/builtin_type 139108 ns/iter (± 30820) 139245 ns/iter (± 30597) 1.00
es/preset-env/usage/property 20956 ns/iter (± 88) 20815 ns/iter (± 64) 1.01
es/resolver/typescript 109526795 ns/iter (± 1612291) 114447016 ns/iter (± 2676735) 0.96
es/fixer/typescript 87535922 ns/iter (± 983238) 86452482 ns/iter (± 1153462) 1.01
es/hygiene/typescript 169697286 ns/iter (± 1634691) 174423600 ns/iter (± 850439) 0.97
es/resolver_with_hygiene/typescript 296322542 ns/iter (± 3590948) 306291203 ns/iter (± 2537269) 0.97
es/visitor/base-perf/module_clone 76079 ns/iter (± 1090) 76643 ns/iter (± 981) 0.99
es/visitor/base-perf/fold_empty 86531 ns/iter (± 1550) 87266 ns/iter (± 2015) 0.99
es/visitor/base-perf/fold_noop_impl_all 87048 ns/iter (± 1509) 86814 ns/iter (± 1435) 1.00
es/visitor/base-perf/fold_noop_impl_vec 87018 ns/iter (± 1710) 88744 ns/iter (± 1892) 0.98
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 59 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 112 ns/iter (± 0) 104 ns/iter (± 0) 1.08
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 102 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3363 ns/iter (± 80) 3404 ns/iter (± 76) 0.99
es/base/parallel/resolver/typescript 5831481565 ns/iter (± 453645439) 4894920999 ns/iter (± 579865225) 1.19
es/base/parallel/hygiene/typescript 2005241428 ns/iter (± 23666887) 2001982186 ns/iter (± 31707831) 1.00
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 659 ns/iter (± 0) 656 ns/iter (± 0) 1.00
misc/visitors/time-complexity/time 20 1234 ns/iter (± 6) 1256 ns/iter (± 5) 0.98
misc/visitors/time-complexity/time 40 6686 ns/iter (± 47) 6707 ns/iter (± 49) 1.00
misc/visitors/time-complexity/time 60 17171 ns/iter (± 51) 17411 ns/iter (± 12) 0.99
es/full-target/es2016 188110 ns/iter (± 906) 187654 ns/iter (± 381) 1.00
es/full-target/es2017 181593 ns/iter (± 818) 182503 ns/iter (± 606) 1.00
es/full-target/es2018 170882 ns/iter (± 616) 171248 ns/iter (± 629) 1.00
es2020_nullish_coalescing 67178 ns/iter (± 115) 67388 ns/iter (± 168) 1.00
es2020_optional_chaining 95622 ns/iter (± 7866) 96241 ns/iter (± 9822) 0.99
es2022_class_properties 93746 ns/iter (± 341) 93737 ns/iter (± 137) 1.00
es2018_object_rest_spread 71358 ns/iter (± 174) 71619 ns/iter (± 193) 1.00
es2019_optional_catch_binding 61553 ns/iter (± 204) 61340 ns/iter (± 95) 1.00
es2017_async_to_generator 62342 ns/iter (± 149) 61981 ns/iter (± 69) 1.01
es2016_exponentiation 65512 ns/iter (± 275) 65413 ns/iter (± 191) 1.00
es2015_arrow 69839 ns/iter (± 489) 70140 ns/iter (± 248) 1.00
es2015_block_scoped_fn 66551 ns/iter (± 298) 66063 ns/iter (± 82) 1.01
es2015_block_scoping 139175 ns/iter (± 7407) 151877 ns/iter (± 10263) 0.92
es2015_classes 116411 ns/iter (± 857) 117860 ns/iter (± 1281) 0.99
es2015_computed_props 61531 ns/iter (± 200) 61483 ns/iter (± 134) 1.00
es2015_destructuring 115521 ns/iter (± 400) 116100 ns/iter (± 240) 1.00
es2015_duplicate_keys 64344 ns/iter (± 197) 64231 ns/iter (± 152) 1.00
es2015_parameters 79697 ns/iter (± 447) 79477 ns/iter (± 193) 1.00
es2015_fn_name 66378 ns/iter (± 556) 66761 ns/iter (± 498) 0.99
es2015_for_of 64337 ns/iter (± 256) 64693 ns/iter (± 168) 0.99
es2015_instanceof 63374 ns/iter (± 247) 63069 ns/iter (± 120) 1.00
es2015_shorthand_property 61270 ns/iter (± 162) 61364 ns/iter (± 147) 1.00
es2015_spread 60954 ns/iter (± 205) 61212 ns/iter (± 116) 1.00
es2015_sticky_regex 62268 ns/iter (± 275) 62228 ns/iter (± 83) 1.00
es2015_typeof_symbol 62814 ns/iter (± 272) 62697 ns/iter (± 100) 1.00
es/transform/baseline/base 52297 ns/iter (± 255) 52167 ns/iter (± 94) 1.00
es/transform/baseline/common_reserved_word 62830 ns/iter (± 254) 62827 ns/iter (± 127) 1.00
es/transform/baseline/common_typescript 169375 ns/iter (± 8463) 161131 ns/iter (± 11484) 1.05
es/target/es3 169208 ns/iter (± 750) 169991 ns/iter (± 410) 1.00
es/target/es2015 624926 ns/iter (± 4358) 630926 ns/iter (± 1374) 0.99
es/target/es2016 65360 ns/iter (± 310) 65324 ns/iter (± 136) 1.00
es/target/es2017 61796 ns/iter (± 252) 62021 ns/iter (± 65) 1.00
es/target/es2018 80673 ns/iter (± 453) 81288 ns/iter (± 163) 0.99
es/target/es2020 131847 ns/iter (± 406) 132564 ns/iter (± 381) 0.99
babelify-only 681976 ns/iter (± 1256) 679346 ns/iter (± 850) 1.00
parse_and_babelify_angular 41793491 ns/iter (± 437595) 45032063 ns/iter (± 1090603) 0.93
parse_and_babelify_backbone 5388188 ns/iter (± 43444) 5437625 ns/iter (± 88408) 0.99
parse_and_babelify_jquery 32188772 ns/iter (± 399554) 32414936 ns/iter (± 478245) 0.99
parse_and_babelify_jquery_mobile 55832451 ns/iter (± 895102) 56354795 ns/iter (± 1010097) 0.99
parse_and_babelify_mootools 33065186 ns/iter (± 493420) 33442299 ns/iter (± 423654) 0.99
parse_and_babelify_underscore 4413657 ns/iter (± 47159) 4336825 ns/iter (± 36269) 1.02
parse_and_babelify_yui 32239432 ns/iter (± 639727) 32155178 ns/iter (± 348015) 1.00
html/minify/document/css_spec 41838860 ns/iter (± 472722) 42684249 ns/iter (± 456091) 0.98
html/minify/document/github 17293012 ns/iter (± 69070) 17578749 ns/iter (± 62634) 0.98
html/minify/document/stackoverflow 15334368 ns/iter (± 67688) 15574775 ns/iter (± 50597) 0.98
html/minify/document_fragment/css_spec 40457319 ns/iter (± 235603) 41164182 ns/iter (± 460212) 0.98
html/minify/document_fragment/github 16562477 ns/iter (± 30317) 16916464 ns/iter (± 41301) 0.98
html/minify/document_fragment/stackoverflow 15122203 ns/iter (± 85441) 15291404 ns/iter (± 58735) 0.99
html/document/visitor/compare/clone 340716 ns/iter (± 2172) 342035 ns/iter (± 2175) 1.00
html/document/visitor/compare/visit_mut_span 368240 ns/iter (± 2004) 369528 ns/iter (± 2148) 1.00
html/document/visitor/compare/visit_mut_span_panic 374074 ns/iter (± 2525) 376362 ns/iter (± 1847) 0.99
html/document/visitor/compare/fold_span 404621 ns/iter (± 2389) 403565 ns/iter (± 2585) 1.00
html/document/visitor/compare/fold_span_panic 462138 ns/iter (± 3140) 461980 ns/iter (± 2598) 1.00
html/document_fragment/visitor/compare/clone 340544 ns/iter (± 1806) 334749 ns/iter (± 2535) 1.02
html/document_fragment/visitor/compare/visit_mut_span 365065 ns/iter (± 1711) 362905 ns/iter (± 2652) 1.01
html/document_fragment/visitor/compare/visit_mut_span_panic 376714 ns/iter (± 2174) 376074 ns/iter (± 1986) 1.00
html/document_fragment/visitor/compare/fold_span 402685 ns/iter (± 2731) 407813 ns/iter (± 1962) 0.99
html/document_fragment/visitor/compare/fold_span_panic 463014 ns/iter (± 1952) 456154 ns/iter (± 1671) 1.02
html/lexer/css_2021_spec 15523065 ns/iter (± 5419) 15568580 ns/iter (± 178950) 1.00
html/lexer/github_com_17_05_2022 6013705 ns/iter (± 1950) 6043556 ns/iter (± 4967) 1.00
html/lexer/stackoverflow_com_17_05_2022 5623512 ns/iter (± 1754) 5631129 ns/iter (± 2196) 1.00
html/parser/parser_document/css_2021_spec 26362131 ns/iter (± 374944) 25915284 ns/iter (± 158784) 1.02
html/parser/parser_document/github_com_17_05_2022 8786962 ns/iter (± 14337) 8729926 ns/iter (± 10733) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7696566 ns/iter (± 5422) 7681607 ns/iter (± 7130) 1.00
html/parser/parser_document_fragment/css_2021_spec 25875262 ns/iter (± 205865) 26021554 ns/iter (± 385360) 0.99
html/parser/parser_document_fragment/github_com_17_05_2022 8798316 ns/iter (± 19078) 8735735 ns/iter (± 23248) 1.01
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7694180 ns/iter (± 11931) 7746366 ns/iter (± 12712) 0.99

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

Please sign in to comment.