Skip to content

Commit

Permalink
feat(css/compat): Support color with hex alpha (#6643)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Dec 14, 2022
1 parent d831fb3 commit fe06b80
Show file tree
Hide file tree
Showing 6 changed files with 294 additions and 2 deletions.
146 changes: 146 additions & 0 deletions crates/swc_css_compat/src/compiler/color_hex_alpha.rs
@@ -0,0 +1,146 @@
use swc_atoms::js_word;
use swc_common::DUMMY_SP;
use swc_css_ast::{
AbsoluteColorBase, AlphaValue, Color, ComponentValue, Delimiter, DelimiterValue, Function,
Ident, Number,
};

use crate::compiler::Compiler;

#[inline]
fn from_hex(c: u8) -> u8 {
match c {
b'0'..=b'9' => c - b'0',
b'a'..=b'f' => c - b'a' + 10,
b'A'..=b'F' => c - b'A' + 10,
_ => {
unreachable!();
}
}
}

#[inline]
fn clamp_unit_f32(val: f64) -> u8 {
(val * 255.).round().max(0.).min(255.) as u8
}

fn shorten_hex_color(value: &str) -> Option<&str> {
let length = value.len();
let chars = value.as_bytes();

if length == 8
&& (chars[6] == b'f' || chars[6] == b'F')
&& (chars[7] == b'f' || chars[7] == b'F')
{
return Some(&value[0..6]);
} else if length == 4 && chars[3] == b'f' || chars[3] == b'F' {
return Some(&value[0..3]);
}

None
}

fn hex_to_rgba(hex: &str) -> (u8, u8, u8, f64) {
let hex = hex.as_bytes();

match hex.len() {
8 => {
let r = from_hex(hex[0]) * 16 + from_hex(hex[1]);
let g = from_hex(hex[2]) * 16 + from_hex(hex[3]);
let b = from_hex(hex[4]) * 16 + from_hex(hex[5]);
let a = (from_hex(hex[6]) * 16 + from_hex(hex[7])) as f64 / 255.0;

(r, g, b, a)
}
4 => {
let r = from_hex(hex[0]) * 17;
let g = from_hex(hex[1]) * 17;
let b = from_hex(hex[2]) * 17;
let a = (from_hex(hex[3]) * 17) as f64 / 255.0;

(r, g, b, a)
}

_ => {
unreachable!()
}
}
}

impl Compiler {
pub(crate) fn process_color_hex_alpha(&mut self, n: &mut ComponentValue) {
if let ComponentValue::Color(box Color::AbsoluteColorBase(AbsoluteColorBase::HexColor(
hex_color,
))) = n
{
if hex_color.value.len() != 4 && hex_color.value.len() != 8 {
return;
}

if let Some(shortened) = shorten_hex_color(&hex_color.value) {
hex_color.value = shortened.into();
hex_color.raw = None;

return;
}

let rgba = hex_to_rgba(&hex_color.value);

let r = rgba.0 as f64;
let g = rgba.1 as f64;
let b = rgba.2 as f64;
let a = rgba.3;

let mut rounded_alpha = (a * 100.).round() / 100.;

if clamp_unit_f32(rounded_alpha) != clamp_unit_f32(a) {
rounded_alpha = (a * 1000.).round() / 1000.;
}

*n = ComponentValue::Color(Box::new(Color::AbsoluteColorBase(
AbsoluteColorBase::Function(Function {
span: hex_color.span,
name: Ident {
span: DUMMY_SP,
value: js_word!("rgba"),
raw: None,
},
value: vec![
ComponentValue::Number(Box::new(Number {
span: DUMMY_SP,
value: r,
raw: None,
})),
ComponentValue::Delimiter(Box::new(Delimiter {
span: DUMMY_SP,
value: DelimiterValue::Comma,
})),
ComponentValue::Number(Box::new(Number {
span: DUMMY_SP,
value: g,
raw: None,
})),
ComponentValue::Delimiter(Box::new(Delimiter {
span: DUMMY_SP,
value: DelimiterValue::Comma,
})),
ComponentValue::Number(Box::new(Number {
span: DUMMY_SP,
value: b,
raw: None,
})),
ComponentValue::Delimiter(Box::new(Delimiter {
span: DUMMY_SP,
value: DelimiterValue::Comma,
})),
ComponentValue::AlphaValue(Box::new(AlphaValue::Number(Number {
span: DUMMY_SP,
value: rounded_alpha,
raw: None,
}))),
],
}),
)));
}
}
}
29 changes: 27 additions & 2 deletions crates/swc_css_compat/src/compiler/mod.rs
@@ -1,13 +1,14 @@
use swc_common::{Spanned, DUMMY_SP};
use swc_css_ast::{
AtRule, MediaAnd, MediaCondition, MediaConditionAllType, MediaConditionWithoutOr,
MediaInParens, MediaQuery, Rule,
AtRule, ComponentValue, MediaAnd, MediaCondition, MediaConditionAllType,
MediaConditionWithoutOr, MediaInParens, MediaQuery, Rule, SupportsCondition,
};
use swc_css_visit::{VisitMut, VisitMutWith};

use self::custom_media::CustomMediaHandler;
use crate::feature::Features;

mod color_hex_alpha;
mod custom_media;
mod media_query_ranges;

Expand All @@ -17,6 +18,7 @@ pub struct Compiler {
#[allow(unused)]
c: Config,
custom_media: CustomMediaHandler,
in_supports_condition: bool,
}

#[derive(Debug)]
Expand All @@ -30,6 +32,7 @@ impl Compiler {
Self {
c: config,
custom_media: Default::default(),
in_supports_condition: Default::default(),
}
}
}
Expand All @@ -43,6 +46,16 @@ impl VisitMut for Compiler {
}
}

fn visit_mut_supports_condition(&mut self, n: &mut SupportsCondition) {
let old_in_support_condition = self.in_supports_condition;

self.in_supports_condition = true;

n.visit_mut_children_with(self);

self.in_supports_condition = old_in_support_condition;
}

fn visit_mut_media_query(&mut self, n: &mut MediaQuery) {
n.visit_mut_children_with(self);

Expand Down Expand Up @@ -105,4 +118,16 @@ impl VisitMut for Compiler {
}
}
}

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

if self.in_supports_condition {
return;
}

if self.c.process.contains(Features::COLOR_HEX_ALPHA) {
self.process_color_hex_alpha(n);
}
}
}
1 change: 1 addition & 0 deletions crates/swc_css_compat/src/feature.rs
Expand Up @@ -5,5 +5,6 @@ bitflags! {
const NESTING = 1 << 0;
const CUSTOM_MEDIA = 1 << 1;
const MEDIA_QUERY_RANGES = 1 << 2;
const COLOR_HEX_ALPHA = 1 << 3;
}
}
52 changes: 52 additions & 0 deletions crates/swc_css_compat/tests/color-hex-alpha/input.css
@@ -0,0 +1,52 @@
body {
background: #9d9 linear-gradient(#9823f8a9, #9823f834);
color: red;
color: #f00;
color: #f00f;
color: #FC0F;
color: #0000ff;
color: #0000ff00;
color: #FFFFFF;
content: "#f00";
content: "#0000ff00";
}

body {
background-color: #f3f3f3f3;
color: #0003;
}

#svg-element {
clip-path: url(#SVGID_1_);
clip-path: url(#aaaa);
}

.other {
background: #ff0099;
background: #ff0099ff;
background: #ff009900;
}

.short {
color: #ffff;
color: #ffffffff;
color: #abdabcff;
color: #000000FF;
color: #abcf;
color: #ff0f;
color: #000f;
color: #0000;
color: #001e;
}

@supports (color: #1111) {
.a {
color: #1111;
}
}

@supports (color: #11111111) {
.a {
color: #11111111;
}
}
46 changes: 46 additions & 0 deletions crates/swc_css_compat/tests/color-hex-alpha/input.expect.css
@@ -0,0 +1,46 @@
body {
background: #9d9 linear-gradient(rgba(152, 35, 248, 0.663), rgba(152, 35, 248, 0.204));
color: red;
color: #f00;
color: #f00;
color: #FC0;
color: #0000ff;
color: rgba(0, 0, 255, 0);
color: #FFFFFF;
content: "#f00";
content: "#0000ff00";
}
body {
background-color: rgba(243, 243, 243, 0.953);
color: rgba(0, 0, 0, 0.2);
}
#svg-element {
clip-path: url(#SVGID_1_);
clip-path: url(#aaaa);
}
.other {
background: #ff0099;
background: #ff0099;
background: rgba(255, 0, 153, 0);
}
.short {
color: #fff;
color: #ffffff;
color: #abdabc;
color: #000000;
color: #abc;
color: #ff0;
color: #000;
color: rgba(0, 0, 0, 0);
color: rgba(0, 0, 17, 0.933);
}
@supports (color: #1111) {
.a {
color: rgba(17, 17, 17, 0.067);
}
}
@supports (color: #11111111) {
.a {
color: rgba(17, 17, 17, 0.067);
}
}
22 changes: 22 additions & 0 deletions crates/swc_css_compat/tests/fixture.rs
Expand Up @@ -125,3 +125,25 @@ fn test_media_query_ranges(input: PathBuf) {
})
.unwrap();
}

#[testing::fixture("tests/color-hex-alpha/**/*.css", exclude("expect.css"))]
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);

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

let s = print_stylesheet(&ss);

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

Ok(())
})
.unwrap();
}

1 comment on commit fe06b80

@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: fe06b80 Previous: e4e4d6c Ratio
es/full/bugs-1 300996 ns/iter (± 18288) 299433 ns/iter (± 18704) 1.01
es/full/minify/libraries/antd 1646758161 ns/iter (± 20064096) 1626232816 ns/iter (± 15620583) 1.01
es/full/minify/libraries/d3 337817001 ns/iter (± 6895005) 333611911 ns/iter (± 5536587) 1.01
es/full/minify/libraries/echarts 1399611670 ns/iter (± 11818302) 1405835474 ns/iter (± 14542912) 1.00
es/full/minify/libraries/jquery 92174554 ns/iter (± 1931942) 92221038 ns/iter (± 967960) 1.00
es/full/minify/libraries/lodash 109521052 ns/iter (± 2003821) 110616947 ns/iter (± 1757873) 0.99
es/full/minify/libraries/moment 53853046 ns/iter (± 508668) 53278394 ns/iter (± 690598) 1.01
es/full/minify/libraries/react 19778994 ns/iter (± 165687) 19743294 ns/iter (± 335990) 1.00
es/full/minify/libraries/terser 260888839 ns/iter (± 4276569) 256926888 ns/iter (± 3093971) 1.02
es/full/minify/libraries/three 472499837 ns/iter (± 9724658) 471768023 ns/iter (± 6628468) 1.00
es/full/minify/libraries/typescript 3099704751 ns/iter (± 23605560) 3070819297 ns/iter (± 24547972) 1.01
es/full/minify/libraries/victory 711212209 ns/iter (± 21301581) 675538048 ns/iter (± 8534132) 1.05
es/full/minify/libraries/vue 134625025 ns/iter (± 3359579) 135247028 ns/iter (± 1946211) 1.00
es/full/codegen/es3 27635 ns/iter (± 48) 28457 ns/iter (± 104) 0.97
es/full/codegen/es5 27578 ns/iter (± 73) 28446 ns/iter (± 39) 0.97
es/full/codegen/es2015 27580 ns/iter (± 75) 28450 ns/iter (± 68) 0.97
es/full/codegen/es2016 27568 ns/iter (± 46) 28420 ns/iter (± 71) 0.97
es/full/codegen/es2017 27582 ns/iter (± 46) 28480 ns/iter (± 83) 0.97
es/full/codegen/es2018 27592 ns/iter (± 29) 28540 ns/iter (± 45) 0.97
es/full/codegen/es2019 27543 ns/iter (± 74) 28456 ns/iter (± 44) 0.97
es/full/codegen/es2020 27601 ns/iter (± 67) 28490 ns/iter (± 87) 0.97
es/full/all/es3 169035866 ns/iter (± 2559614) 167756246 ns/iter (± 3366952) 1.01
es/full/all/es5 163037029 ns/iter (± 3852142) 160496324 ns/iter (± 3280817) 1.02
es/full/all/es2015 121300582 ns/iter (± 1471173) 120257407 ns/iter (± 919529) 1.01
es/full/all/es2016 120441512 ns/iter (± 2071211) 122167821 ns/iter (± 1832109) 0.99
es/full/all/es2017 120316950 ns/iter (± 1096381) 119360856 ns/iter (± 1141148) 1.01
es/full/all/es2018 120205716 ns/iter (± 2449222) 118101182 ns/iter (± 1654961) 1.02
es/full/all/es2019 118703904 ns/iter (± 1852033) 117329299 ns/iter (± 891268) 1.01
es/full/all/es2020 111880447 ns/iter (± 1349510) 113327928 ns/iter (± 1787787) 0.99
es/full/parser 508462 ns/iter (± 7336) 510695 ns/iter (± 7136) 1.00
es/full/base/fixer 21775 ns/iter (± 36) 22076 ns/iter (± 34) 0.99
es/full/base/resolver_and_hygiene 76958 ns/iter (± 78) 77771 ns/iter (± 97) 0.99
serialization of ast node 142 ns/iter (± 0) 161 ns/iter (± 0) 0.88
serialization of serde 127 ns/iter (± 0) 126 ns/iter (± 0) 1.01
css/minify/libraries/bootstrap 26864173 ns/iter (± 66116) 27053336 ns/iter (± 64260) 0.99
css/visitor/compare/clone 2085745 ns/iter (± 15243) 2115201 ns/iter (± 8857) 0.99
css/visitor/compare/visit_mut_span 2259912 ns/iter (± 4476) 2308505 ns/iter (± 6436) 0.98
css/visitor/compare/visit_mut_span_panic 2318806 ns/iter (± 3308) 2343089 ns/iter (± 7483) 0.99
css/visitor/compare/fold_span 2986589 ns/iter (± 47914) 3023430 ns/iter (± 27152) 0.99
css/visitor/compare/fold_span_panic 3106316 ns/iter (± 38801) 3139339 ns/iter (± 27395) 0.99
css/lexer/bootstrap_5_1_3 5186669 ns/iter (± 1244) 5195039 ns/iter (± 5260) 1.00
css/lexer/foundation_6_7_4 4395803 ns/iter (± 720) 4401551 ns/iter (± 4586) 1.00
css/lexer/tailwind_3_1_1 824885 ns/iter (± 828) 826341 ns/iter (± 542) 1.00
css/parser/bootstrap_5_1_3 20674921 ns/iter (± 110657) 20657876 ns/iter (± 46703) 1.00
css/parser/foundation_6_7_4 16390537 ns/iter (± 19223) 16560747 ns/iter (± 101193) 0.99
css/parser/tailwind_3_1_1 3177072 ns/iter (± 2470) 3186149 ns/iter (± 2285) 1.00
es/codegen/colors 332488 ns/iter (± 186186) 326618 ns/iter (± 182990) 1.02
es/codegen/large 1218788 ns/iter (± 637353) 1240883 ns/iter (± 627669) 0.98
es/codegen/with-parser/colors 45488 ns/iter (± 283) 45473 ns/iter (± 435) 1.00
es/codegen/with-parser/large 513831 ns/iter (± 1062) 513692 ns/iter (± 2248) 1.00
es/minify/libraries/antd 1407542773 ns/iter (± 24620448) 1418475939 ns/iter (± 9416368) 0.99
es/minify/libraries/d3 302143683 ns/iter (± 10636144) 287448463 ns/iter (± 5727087) 1.05
es/minify/libraries/echarts 1230040855 ns/iter (± 18167194) 1211713336 ns/iter (± 15291257) 1.02
es/minify/libraries/jquery 81336683 ns/iter (± 1197576) 79669683 ns/iter (± 1150208) 1.02
es/minify/libraries/lodash 98832833 ns/iter (± 1415497) 97599042 ns/iter (± 785136) 1.01
es/minify/libraries/moment 49246812 ns/iter (± 857161) 46291122 ns/iter (± 405462) 1.06
es/minify/libraries/react 17429067 ns/iter (± 266936) 17449239 ns/iter (± 271709) 1.00
es/minify/libraries/terser 229942705 ns/iter (± 5976977) 218835906 ns/iter (± 2262928) 1.05
es/minify/libraries/three 400820561 ns/iter (± 10546240) 388569218 ns/iter (± 5867866) 1.03
es/minify/libraries/typescript 2707082729 ns/iter (± 29965951) 2654368341 ns/iter (± 12815825) 1.02
es/minify/libraries/victory 586860015 ns/iter (± 13101763) 574555195 ns/iter (± 12623719) 1.02
es/minify/libraries/vue 119922740 ns/iter (± 3135900) 119376583 ns/iter (± 2282741) 1.00
es/visitor/compare/clone 2404892 ns/iter (± 32371) 2421477 ns/iter (± 30440) 0.99
es/visitor/compare/visit_mut_span 2784413 ns/iter (± 13986) 2829008 ns/iter (± 15440) 0.98
es/visitor/compare/visit_mut_span_panic 2873928 ns/iter (± 30437) 2871575 ns/iter (± 9397) 1.00
es/visitor/compare/fold_span 3981743 ns/iter (± 48130) 3982781 ns/iter (± 47724) 1.00
es/visitor/compare/fold_span_panic 4114624 ns/iter (± 31046) 4099937 ns/iter (± 7792) 1.00
es/lexer/colors 17381 ns/iter (± 21) 17364 ns/iter (± 24) 1.00
es/lexer/angular 8210028 ns/iter (± 37460) 8242480 ns/iter (± 6566) 1.00
es/lexer/backbone 1072320 ns/iter (± 336) 1077334 ns/iter (± 1444) 1.00
es/lexer/jquery 5946733 ns/iter (± 1222) 5972973 ns/iter (± 11405) 1.00
es/lexer/jquery mobile 9162127 ns/iter (± 2055) 9208351 ns/iter (± 8175) 0.99
es/lexer/mootools 4671572 ns/iter (± 1010) 4684491 ns/iter (± 2813) 1.00
es/lexer/underscore 895197 ns/iter (± 247) 896995 ns/iter (± 1572) 1.00
es/lexer/three 27915316 ns/iter (± 12304) 27982188 ns/iter (± 38175) 1.00
es/lexer/yui 5044733 ns/iter (± 963) 5053541 ns/iter (± 1453) 1.00
es/parser/colors 31314 ns/iter (± 142) 30954 ns/iter (± 175) 1.01
es/parser/angular 15993951 ns/iter (± 174141) 16116953 ns/iter (± 144473) 0.99
es/parser/backbone 2324087 ns/iter (± 13149) 2330480 ns/iter (± 10874) 1.00
es/parser/jquery 12563443 ns/iter (± 87061) 12835828 ns/iter (± 157933) 0.98
es/parser/jquery mobile 20750588 ns/iter (± 401706) 20355035 ns/iter (± 299088) 1.02
es/parser/mootools 9700858 ns/iter (± 34441) 9637606 ns/iter (± 73482) 1.01
es/parser/underscore 1971469 ns/iter (± 9347) 1979843 ns/iter (± 10585) 1.00
es/parser/three 59160260 ns/iter (± 451020) 59081327 ns/iter (± 412221) 1.00
es/parser/yui 9666270 ns/iter (± 47865) 9750696 ns/iter (± 92096) 0.99
es/preset-env/usage/builtin_type 142049 ns/iter (± 32935) 143844 ns/iter (± 33506) 0.99
es/preset-env/usage/property 21250 ns/iter (± 69) 21394 ns/iter (± 108) 0.99
es/resolver/typescript 110616766 ns/iter (± 2272648) 110286926 ns/iter (± 1639109) 1.00
es/fixer/typescript 86531316 ns/iter (± 670971) 86708097 ns/iter (± 1118326) 1.00
es/hygiene/typescript 168055581 ns/iter (± 1166489) 169138590 ns/iter (± 2426743) 0.99
es/resolver_with_hygiene/typescript 295267668 ns/iter (± 742375) 299457886 ns/iter (± 4037017) 0.99
es/visitor/base-perf/module_clone 74275 ns/iter (± 1041) 74168 ns/iter (± 640) 1.00
es/visitor/base-perf/fold_empty 86278 ns/iter (± 1445) 85938 ns/iter (± 1881) 1.00
es/visitor/base-perf/fold_noop_impl_all 85696 ns/iter (± 723) 85940 ns/iter (± 928) 1.00
es/visitor/base-perf/fold_noop_impl_vec 86463 ns/iter (± 1157) 86324 ns/iter (± 1225) 1.00
es/visitor/base-perf/boxing_boxed_clone 54 ns/iter (± 0) 56 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed_clone 58 ns/iter (± 0) 58 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 103 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed 101 ns/iter (± 0) 102 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3666 ns/iter (± 83) 3552 ns/iter (± 46) 1.03
es/base/parallel/resolver/typescript 4917048540 ns/iter (± 251501171) 5328541224 ns/iter (± 428587174) 0.92
es/base/parallel/hygiene/typescript 2012932844 ns/iter (± 15815560) 1986643377 ns/iter (± 27521604) 1.01
misc/visitors/time-complexity/time 5 103 ns/iter (± 0) 102 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 10 337 ns/iter (± 1) 344 ns/iter (± 2) 0.98
misc/visitors/time-complexity/time 15 649 ns/iter (± 0) 672 ns/iter (± 0) 0.97
misc/visitors/time-complexity/time 20 1271 ns/iter (± 47) 1218 ns/iter (± 1) 1.04
misc/visitors/time-complexity/time 40 6665 ns/iter (± 11) 6652 ns/iter (± 27) 1.00
misc/visitors/time-complexity/time 60 17257 ns/iter (± 228) 17028 ns/iter (± 25) 1.01
es/full-target/es2016 187609 ns/iter (± 333) 188176 ns/iter (± 629) 1.00
es/full-target/es2017 180569 ns/iter (± 402) 181526 ns/iter (± 742) 0.99
es/full-target/es2018 169690 ns/iter (± 660) 170870 ns/iter (± 717) 0.99
es2020_nullish_coalescing 65473 ns/iter (± 125) 65597 ns/iter (± 155) 1.00
es2020_optional_chaining 94407 ns/iter (± 8042) 95376 ns/iter (± 8791) 0.99
es2022_class_properties 92115 ns/iter (± 128) 92970 ns/iter (± 157) 0.99
es2018_object_rest_spread 70103 ns/iter (± 973) 70345 ns/iter (± 178) 1.00
es2019_optional_catch_binding 59898 ns/iter (± 110) 60238 ns/iter (± 117) 0.99
es2017_async_to_generator 60382 ns/iter (± 146) 60809 ns/iter (± 66) 0.99
es2016_exponentiation 63379 ns/iter (± 153) 64096 ns/iter (± 137) 0.99
es2015_arrow 69079 ns/iter (± 231) 68934 ns/iter (± 227) 1.00
es2015_block_scoped_fn 64735 ns/iter (± 86) 64714 ns/iter (± 236) 1.00
es2015_block_scoping 156824 ns/iter (± 9823) 137355 ns/iter (± 6956) 1.14
es2015_classes 115189 ns/iter (± 435) 115287 ns/iter (± 515) 1.00
es2015_computed_props 59801 ns/iter (± 104) 59772 ns/iter (± 122) 1.00
es2015_destructuring 114442 ns/iter (± 281) 113999 ns/iter (± 359) 1.00
es2015_duplicate_keys 62521 ns/iter (± 115) 62537 ns/iter (± 61) 1.00
es2015_parameters 78008 ns/iter (± 147) 77918 ns/iter (± 202) 1.00
es2015_fn_name 65529 ns/iter (± 542) 65365 ns/iter (± 469) 1.00
es2015_for_of 62639 ns/iter (± 170) 62950 ns/iter (± 71) 1.00
es2015_instanceof 61645 ns/iter (± 87) 61950 ns/iter (± 58) 1.00
es2015_shorthand_property 59303 ns/iter (± 146) 59819 ns/iter (± 77) 0.99
es2015_spread 59595 ns/iter (± 108) 59858 ns/iter (± 84) 1.00
es2015_sticky_regex 60974 ns/iter (± 113) 59852 ns/iter (± 695) 1.02
es2015_typeof_symbol 61077 ns/iter (± 103) 59929 ns/iter (± 88) 1.02
es/transform/baseline/base 50346 ns/iter (± 79) 49697 ns/iter (± 117) 1.01
es/transform/baseline/common_reserved_word 61268 ns/iter (± 145) 60292 ns/iter (± 98) 1.02
es/transform/baseline/common_typescript 141937 ns/iter (± 1812) 141233 ns/iter (± 3139) 1.00
es/target/es3 168127 ns/iter (± 217) 164391 ns/iter (± 105) 1.02
es/target/es2015 627727 ns/iter (± 1080) 598561 ns/iter (± 503) 1.05
es/target/es2016 63348 ns/iter (± 151) 62529 ns/iter (± 45) 1.01
es/target/es2017 60420 ns/iter (± 88) 59428 ns/iter (± 140) 1.02
es/target/es2018 80211 ns/iter (± 116) 78593 ns/iter (± 119) 1.02
es/target/es2020 131363 ns/iter (± 227) 127546 ns/iter (± 162) 1.03
babelify-only 668025 ns/iter (± 4674) 669406 ns/iter (± 614) 1.00
parse_and_babelify_angular 43868900 ns/iter (± 610831) 42550439 ns/iter (± 696545) 1.03
parse_and_babelify_backbone 5404051 ns/iter (± 81222) 5452056 ns/iter (± 79406) 0.99
parse_and_babelify_jquery 32249270 ns/iter (± 364518) 31776033 ns/iter (± 579495) 1.01
parse_and_babelify_jquery_mobile 55082815 ns/iter (± 732057) 55678555 ns/iter (± 986857) 0.99
parse_and_babelify_mootools 33835474 ns/iter (± 612432) 33354360 ns/iter (± 499484) 1.01
parse_and_babelify_underscore 4368925 ns/iter (± 54973) 4352357 ns/iter (± 43580) 1.00
parse_and_babelify_yui 32922537 ns/iter (± 379733) 32860112 ns/iter (± 448389) 1.00
html/minify/document/css_spec 41584284 ns/iter (± 386390) 42051354 ns/iter (± 282472) 0.99
html/minify/document/github 17401033 ns/iter (± 39904) 17450089 ns/iter (± 44176) 1.00
html/minify/document/stackoverflow 15473526 ns/iter (± 35016) 15674955 ns/iter (± 77683) 0.99
html/minify/document_fragment/css_spec 39820186 ns/iter (± 366765) 40382348 ns/iter (± 216792) 0.99
html/minify/document_fragment/github 16698929 ns/iter (± 70330) 16721735 ns/iter (± 26060) 1.00
html/minify/document_fragment/stackoverflow 15489816 ns/iter (± 104970) 15151818 ns/iter (± 46354) 1.02
html/document/visitor/compare/clone 340841 ns/iter (± 2047) 345897 ns/iter (± 1638) 0.99
html/document/visitor/compare/visit_mut_span 365522 ns/iter (± 1457) 369942 ns/iter (± 2910) 0.99
html/document/visitor/compare/visit_mut_span_panic 376416 ns/iter (± 2248) 375657 ns/iter (± 1719) 1.00
html/document/visitor/compare/fold_span 404181 ns/iter (± 1567) 409177 ns/iter (± 1411) 0.99
html/document/visitor/compare/fold_span_panic 460993 ns/iter (± 2751) 466111 ns/iter (± 1633) 0.99
html/document_fragment/visitor/compare/clone 339078 ns/iter (± 2004) 338861 ns/iter (± 2933) 1.00
html/document_fragment/visitor/compare/visit_mut_span 365634 ns/iter (± 2232) 366556 ns/iter (± 1880) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 372208 ns/iter (± 1961) 373524 ns/iter (± 2556) 1.00
html/document_fragment/visitor/compare/fold_span 401328 ns/iter (± 2071) 404504 ns/iter (± 1671) 0.99
html/document_fragment/visitor/compare/fold_span_panic 459460 ns/iter (± 1971) 461193 ns/iter (± 2042) 1.00
html/lexer/css_2021_spec 15592866 ns/iter (± 6709) 15550596 ns/iter (± 7913) 1.00
html/lexer/github_com_17_05_2022 6052926 ns/iter (± 7556) 6048146 ns/iter (± 4869) 1.00
html/lexer/stackoverflow_com_17_05_2022 5659403 ns/iter (± 2080) 5643404 ns/iter (± 1973) 1.00
html/parser/parser_document/css_2021_spec 25682802 ns/iter (± 267786) 25993460 ns/iter (± 204758) 0.99
html/parser/parser_document/github_com_17_05_2022 8777695 ns/iter (± 33271) 8801247 ns/iter (± 73728) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7730492 ns/iter (± 11063) 7732675 ns/iter (± 8547) 1.00
html/parser/parser_document_fragment/css_2021_spec 26115903 ns/iter (± 151647) 26056368 ns/iter (± 339685) 1.00
html/parser/parser_document_fragment/github_com_17_05_2022 8793057 ns/iter (± 9808) 8809003 ns/iter (± 28645) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7728190 ns/iter (± 4919) 7759193 ns/iter (± 4421) 1.00

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

Please sign in to comment.