Skip to content

Commit 6b3c0da

Browse files
authoredJul 3, 2024··
feat(binding): Create Wasm package for stripping only TypeScript (#9124)
**Description:** This PR adds a Wasm binding which is only capable of stripping TypeScript types. **Related issue:** - marco-ippolito/node#2
1 parent 1597c5d commit 6b3c0da

File tree

14 files changed

+333
-47
lines changed

14 files changed

+333
-47
lines changed
 

‎.github/workflows/publish-core.yml

+5-2
Original file line numberDiff line numberDiff line change
@@ -508,11 +508,14 @@ jobs:
508508
matrix:
509509
settings:
510510
- crate: "binding_core_wasm"
511-
npm: "@swc/wasm"
511+
npm: "@swc\\/wasm"
512512
target: nodejs
513513
- crate: "binding_core_wasm"
514-
npm: "@swc/wasm-web"
514+
npm: "@swc\\/wasm-web"
515515
target: web
516+
- crate: "binding_typescript_wasm"
517+
npm: "@swc\\/wasm-typescript"
518+
target: no-modules
516519
steps:
517520
- uses: actions/checkout@v4
518521

‎bindings/Cargo.lock

+20-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎bindings/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ members = [
44
"binding_core_wasm",
55
"binding_minifier_node",
66
"binding_minifier_wasm",
7+
"binding_typescript_wasm",
78
"swc_cli",
89
]
910
resolver = "2"

‎bindings/binding_core_node/build.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fn main() {
1717
let out_dir = env::var("OUT_DIR").expect("Outdir should exist");
1818
let dest_path = Path::new(&out_dir).join("triple.txt");
1919
let mut f =
20-
BufWriter::new(File::create(&dest_path).expect("Failed to create target triple text"));
20+
BufWriter::new(File::create(dest_path).expect("Failed to create target triple text"));
2121
write!(
2222
f,
2323
"{}",

‎bindings/binding_minifier_node/src/minify.rs

+25-26
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ use napi::{
77
};
88
use serde::Deserialize;
99
use swc_compiler_base::{
10-
minify_file_comments, parse_js, IdentCollector, IsModule, PrintArgs, SourceMapsConfig,
11-
TransformOutput,
10+
minify_file_comments, parse_js, IdentCollector, PrintArgs, SourceMapsConfig, TransformOutput,
1211
};
1312
use swc_config::config_types::BoolOr;
1413
use swc_core::{
@@ -23,7 +22,7 @@ use swc_core::{
2322
js::{JsMinifyCommentOption, JsMinifyOptions},
2423
option::{MinifyOptions, TopLevelOptions},
2524
},
26-
parser::{EsConfig, Syntax},
25+
parser::{EsSyntax, Syntax},
2726
transforms::base::{fixer::fixer, hygiene::hygiene, resolver},
2827
visit::{FoldWith, VisitMutWith, VisitWith},
2928
},
@@ -109,11 +108,30 @@ fn do_work(input: MinifyTarget, options: JsMinifyOptions) -> napi::Result<Transf
109108
..Default::default()
110109
};
111110

111+
let comments = SingleThreadedComments::default();
112+
113+
let module = parse_js(
114+
cm.clone(),
115+
fm.clone(),
116+
handler,
117+
target,
118+
Syntax::Es(EsSyntax {
119+
jsx: true,
120+
decorators: true,
121+
decorators_before_export: true,
122+
import_attributes: true,
123+
..Default::default()
124+
}),
125+
options.module,
126+
Some(&comments),
127+
)
128+
.context("failed to parse input file")?;
129+
112130
// top_level defaults to true if module is true
113131

114132
// https://github.com/swc-project/swc/issues/2254
115133

116-
if options.module {
134+
if module.is_module() {
117135
if let Some(opts) = &mut min_opts.compress {
118136
if opts.top_level.is_none() {
119137
opts.top_level = Some(TopLevelOptions { functions: true });
@@ -136,25 +154,6 @@ fn do_work(input: MinifyTarget, options: JsMinifyOptions) -> napi::Result<Transf
136154
}
137155
}
138156

139-
let comments = SingleThreadedComments::default();
140-
141-
let module = parse_js(
142-
cm.clone(),
143-
fm.clone(),
144-
handler,
145-
target,
146-
Syntax::Es(EsConfig {
147-
jsx: true,
148-
decorators: true,
149-
decorators_before_export: true,
150-
import_attributes: true,
151-
..Default::default()
152-
}),
153-
IsModule::Bool(options.module),
154-
Some(&comments),
155-
)
156-
.context("failed to parse input file")?;
157-
158157
let source_map_names = if source_map.enabled() {
159158
let mut v = IdentCollector {
160159
names: Default::default(),
@@ -172,7 +171,7 @@ fn do_work(input: MinifyTarget, options: JsMinifyOptions) -> napi::Result<Transf
172171

173172
let is_mangler_enabled = min_opts.mangle.is_some();
174173

175-
let module = (|| {
174+
let module = {
176175
let module = module.fold_with(&mut resolver(unresolved_mark, top_level_mark, false));
177176

178177
let mut module = swc_core::ecma::minifier::optimize(
@@ -192,7 +191,7 @@ fn do_work(input: MinifyTarget, options: JsMinifyOptions) -> napi::Result<Transf
192191
}
193192
module.visit_mut_with(&mut fixer(Some(&comments as &dyn Comments)));
194193
module
195-
})();
194+
};
196195

197196
let preserve_comments = options
198197
.format
@@ -211,7 +210,7 @@ fn do_work(input: MinifyTarget, options: JsMinifyOptions) -> napi::Result<Transf
211210
inline_sources_content: options.inline_sources_content,
212211
source_map,
213212
source_map_names: &source_map_names,
214-
orig: orig.as_ref(),
213+
orig,
215214
comments: Some(&comments),
216215
emit_source_map_columns: options.emit_source_map_columns,
217216
preamble: &options.format.preamble,

‎bindings/binding_minifier_wasm/scripts/build.sh

-1
This file was deleted.

‎bindings/binding_minifier_wasm/scripts/build_nodejs_release.sh

-4
This file was deleted.

‎bindings/binding_minifier_wasm/scripts/build_web_release.sh

-4
This file was deleted.

‎bindings/binding_minifier_wasm/scripts/test.sh

-6
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
[package]
2+
authors = ["강동윤 <kdy1997.dev@gmail.com>"]
3+
description = "wasm module for swc"
4+
edition = "2021"
5+
license = "Apache-2.0"
6+
name = "binding_typescript_wasm"
7+
publish = false
8+
repository = "https://github.com/swc-project/swc.git"
9+
version = "1.6.6"
10+
11+
[lib]
12+
bench = false
13+
crate-type = ["cdylib"]
14+
15+
[features]
16+
default = ["swc_v1"]
17+
swc_v1 = []
18+
swc_v2 = []
19+
20+
[dependencies]
21+
anyhow = "1.0.66"
22+
getrandom = { version = "0.2.10", features = ["js"] }
23+
serde = { version = "1", features = ["derive"] }
24+
serde-wasm-bindgen = "0.4.5"
25+
serde_json = "1.0.120"
26+
swc_core = { version = "0.95.10", features = [
27+
"ecma_ast_serde",
28+
"ecma_codegen",
29+
"ecma_transforms",
30+
"ecma_transforms_typescript",
31+
"ecma_visit",
32+
] }
33+
swc_ecma_codegen = { version = "0.151.1", features = ["serde-impl"] }
34+
swc_error_reporters = "0.18.0"
35+
tracing = { version = "0.1.37", features = ["max_level_off"] }
36+
wasm-bindgen = { version = "0.2.82", features = ["enable-interning"] }
37+
wasm-bindgen-futures = { version = "0.4.41" }
38+
39+
[package.metadata.wasm-pack.profile.release]
40+
wasm-opt = false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"devDependencies": {
3+
"jest": "^25.1.0"
4+
}
5+
}
+227
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
use anyhow::{Context, Error};
2+
use serde::{Deserialize, Serialize};
3+
use swc_core::{
4+
base::{config::ErrorFormat, HandlerOpts},
5+
common::{
6+
comments::SingleThreadedComments, errors::ColorConfig, source_map::SourceMapGenConfig,
7+
sync::Lrc, FileName, Mark, SourceMap, GLOBALS,
8+
},
9+
ecma::{
10+
ast::{EsVersion, Program},
11+
codegen::text_writer::JsWriter,
12+
parser::{
13+
parse_file_as_module, parse_file_as_program, parse_file_as_script, Syntax, TsSyntax,
14+
},
15+
transforms::base::{
16+
fixer::fixer,
17+
helpers::{inject_helpers, Helpers, HELPERS},
18+
hygiene::hygiene,
19+
resolver,
20+
},
21+
visit::VisitMutWith,
22+
},
23+
};
24+
use swc_error_reporters::handler::try_with_handler;
25+
use wasm_bindgen::prelude::*;
26+
use wasm_bindgen_futures::{
27+
future_to_promise,
28+
js_sys::{JsString, Promise},
29+
};
30+
31+
/// Custom interface definitions for the @swc/wasm's public interface instead of
32+
/// auto generated one, which is not reflecting most of types in detail.
33+
#[wasm_bindgen(typescript_custom_section)]
34+
const INTERFACE_DEFINITIONS: &'static str = r#"
35+
export function transform(src: string, opts?: Options): Promise<TransformOutput>;
36+
export function transformSync(src: string, opts?: Options): TransformOutput;
37+
"#;
38+
39+
#[derive(Deserialize)]
40+
#[serde(rename_all = "camelCase")]
41+
pub struct Options {
42+
#[serde(default)]
43+
pub module: Option<bool>,
44+
#[serde(default)]
45+
pub filename: Option<String>,
46+
47+
#[serde(default)]
48+
pub parser: TsSyntax,
49+
50+
#[serde(default)]
51+
pub external_helpers: bool,
52+
53+
#[serde(default)]
54+
pub source_maps: bool,
55+
56+
#[serde(default)]
57+
pub transform: swc_core::ecma::transforms::typescript::Config,
58+
59+
#[serde(default)]
60+
pub codegen: swc_core::ecma::codegen::Config,
61+
}
62+
63+
#[derive(Serialize)]
64+
pub struct TransformOutput {
65+
code: String,
66+
map: Option<String>,
67+
}
68+
69+
#[wasm_bindgen]
70+
pub fn transform(input: JsString, options: JsValue) -> Promise {
71+
future_to_promise(async move { transform_sync(input, options) })
72+
}
73+
74+
#[wasm_bindgen]
75+
pub fn transform_sync(input: JsString, options: JsValue) -> Result<JsValue, JsValue> {
76+
let options: Options = serde_wasm_bindgen::from_value(options)?;
77+
78+
let input = input.as_string().unwrap();
79+
80+
let result = GLOBALS
81+
.set(&Default::default(), || operate(input, options))
82+
.map_err(|err| convert_err(err, None))?;
83+
84+
Ok(serde_wasm_bindgen::to_value(&result)?)
85+
}
86+
87+
fn operate(input: String, options: Options) -> Result<TransformOutput, Error> {
88+
let cm = Lrc::new(SourceMap::default());
89+
90+
try_with_handler(
91+
cm.clone(),
92+
HandlerOpts {
93+
color: ColorConfig::Never,
94+
skip_filename: true,
95+
},
96+
|handler| {
97+
let filename = options
98+
.filename
99+
.map_or(FileName::Anon, |f| FileName::Real(f.into()));
100+
101+
let fm = cm.new_source_file(filename, input);
102+
103+
let syntax = Syntax::Typescript(options.parser);
104+
let target = EsVersion::latest();
105+
106+
let comments = SingleThreadedComments::default();
107+
let mut errors = vec![];
108+
109+
let program = match options.module {
110+
Some(true) => {
111+
parse_file_as_module(&fm, syntax, target, Some(&comments), &mut errors)
112+
.map(Program::Module)
113+
}
114+
Some(false) => {
115+
parse_file_as_script(&fm, syntax, target, Some(&comments), &mut errors)
116+
.map(Program::Script)
117+
}
118+
None => parse_file_as_program(&fm, syntax, target, Some(&comments), &mut errors),
119+
};
120+
121+
let mut program = match program {
122+
Ok(program) => program,
123+
Err(err) => {
124+
err.into_diagnostic(handler).emit();
125+
126+
for e in errors {
127+
e.into_diagnostic(handler).emit();
128+
}
129+
130+
return Err(anyhow::anyhow!("failed to parse"));
131+
}
132+
};
133+
134+
if !errors.is_empty() {
135+
for e in errors {
136+
e.into_diagnostic(handler).emit();
137+
}
138+
139+
return Err(anyhow::anyhow!("failed to parse"));
140+
}
141+
142+
let unresolved_mark = Mark::new();
143+
let top_level_mark = Mark::new();
144+
145+
HELPERS.set(&Helpers::new(options.external_helpers), || {
146+
// Apply resolver
147+
148+
program.visit_mut_with(&mut resolver(unresolved_mark, top_level_mark, true));
149+
150+
// Strip typescript types
151+
152+
program.visit_mut_with(&mut swc_core::ecma::transforms::typescript::typescript(
153+
options.transform,
154+
top_level_mark,
155+
));
156+
157+
// Apply external helpers
158+
159+
program.visit_mut_with(&mut inject_helpers(unresolved_mark));
160+
161+
// Apply hygiene
162+
163+
program.visit_mut_with(&mut hygiene());
164+
165+
// Apply fixer
166+
167+
program.visit_mut_with(&mut fixer(Some(&comments)));
168+
});
169+
170+
// Generate code
171+
172+
let mut buf = vec![];
173+
let mut src_map_buf = if options.source_maps {
174+
Some(vec![])
175+
} else {
176+
None
177+
};
178+
179+
{
180+
let wr = JsWriter::new(cm.clone(), "\n", &mut buf, src_map_buf.as_mut());
181+
let mut emitter = swc_core::ecma::codegen::Emitter {
182+
cfg: options.codegen,
183+
cm: cm.clone(),
184+
comments: Some(&comments),
185+
wr,
186+
};
187+
188+
emitter.emit_program(&program).unwrap();
189+
}
190+
191+
let code = String::from_utf8(buf).context("generated code is not utf-8")?;
192+
193+
let map = if let Some(src_map_buf) = src_map_buf {
194+
let mut wr = vec![];
195+
let map = cm.build_source_map_with_config(&src_map_buf, None, TsSourceMapGenConfig);
196+
197+
map.to_writer(&mut wr)
198+
.context("failed to write source map")?;
199+
200+
let map = String::from_utf8(wr).context("source map is not utf-8")?;
201+
Some(map)
202+
} else {
203+
None
204+
};
205+
206+
Ok(TransformOutput { code, map })
207+
},
208+
)
209+
}
210+
211+
pub fn convert_err(
212+
err: Error,
213+
error_format: Option<ErrorFormat>,
214+
) -> wasm_bindgen::prelude::JsValue {
215+
error_format
216+
.unwrap_or(ErrorFormat::Normal)
217+
.format(&err)
218+
.into()
219+
}
220+
221+
struct TsSourceMapGenConfig;
222+
223+
impl SourceMapGenConfig for TsSourceMapGenConfig {
224+
fn file_name_to_source(&self, f: &FileName) -> String {
225+
f.to_string()
226+
}
227+
}

‎scripts/publish.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ echo "Publishing $version with swc_core $swc_core_version"
1919
# Update version
2020
(cd ./packages/core && npm version "$version" --no-git-tag-version --allow-same-version || true)
2121
(cd ./packages/minifier && npm version "$version" --no-git-tag-version --allow-same-version || true)
22-
(cd ./bindings && cargo set-version $version -p binding_core_wasm -p binding_minifier_wasm)
22+
(cd ./bindings && cargo set-version $version -p binding_core_wasm -p binding_minifier_wasm -p binding_typescript_wasm)
2323
(cd ./bindings && cargo set-version --bump patch -p swc_cli)
2424

2525

‎yarn.lock

+8
Original file line numberDiff line numberDiff line change
@@ -6323,6 +6323,14 @@ __metadata:
63236323
languageName: unknown
63246324
linkType: soft
63256325

6326+
"binding_typescript_wasm-2142ce@workspace:bindings/binding_typescript_wasm":
6327+
version: 0.0.0-use.local
6328+
resolution: "binding_typescript_wasm-2142ce@workspace:bindings/binding_typescript_wasm"
6329+
dependencies:
6330+
jest: "npm:^25.1.0"
6331+
languageName: unknown
6332+
linkType: soft
6333+
63266334
"bindings@npm:^1.5.0":
63276335
version: 1.5.0
63286336
resolution: "bindings@npm:1.5.0"

1 commit comments

Comments
 (1)

github-actions[bot] commented on Jul 3, 2024

@github-actions[bot]

Benchmark

Benchmark suite Current: 6b3c0da Previous: 026ff7e Ratio
es/full/bugs-1 275032 ns/iter (± 2223) 289886 ns/iter (± 12294) 0.95
es/full/minify/libraries/antd 1811866763 ns/iter (± 67401519) 1859560991 ns/iter (± 112973168) 0.97
es/full/minify/libraries/d3 369383182 ns/iter (± 15280593) 342723411 ns/iter (± 2675950) 1.08
es/full/minify/libraries/echarts 1601704378 ns/iter (± 40307517) 1533113557 ns/iter (± 44210078) 1.04
es/full/minify/libraries/jquery 103988813 ns/iter (± 2833003) 103038525 ns/iter (± 366458) 1.01
es/full/minify/libraries/lodash 115983672 ns/iter (± 723237) 115235517 ns/iter (± 748888) 1.01
es/full/minify/libraries/moment 60231629 ns/iter (± 461813) 59702838 ns/iter (± 134184) 1.01
es/full/minify/libraries/react 18402396 ns/iter (± 54574) 18410272 ns/iter (± 518890) 1.00
es/full/minify/libraries/terser 280293611 ns/iter (± 5272147) 288539211 ns/iter (± 7905308) 0.97
es/full/minify/libraries/three 482861024 ns/iter (± 16010857) 509879882 ns/iter (± 17601076) 0.95
es/full/minify/libraries/typescript 3280340971 ns/iter (± 41775178) 3279551572 ns/iter (± 45393622) 1.00
es/full/minify/libraries/victory 829863380 ns/iter (± 32870982) 744273120 ns/iter (± 16120565) 1.11
es/full/minify/libraries/vue 146326196 ns/iter (± 979999) 145748656 ns/iter (± 450268) 1.00
es/full/codegen/es3 59523 ns/iter (± 589) 58498 ns/iter (± 208) 1.02
es/full/codegen/es5 59292 ns/iter (± 250) 58842 ns/iter (± 371) 1.01
es/full/codegen/es2015 59284 ns/iter (± 160) 58583 ns/iter (± 557) 1.01
es/full/codegen/es2016 59203 ns/iter (± 235) 58497 ns/iter (± 96) 1.01
es/full/codegen/es2017 59220 ns/iter (± 223) 58609 ns/iter (± 154) 1.01
es/full/codegen/es2018 59246 ns/iter (± 251) 58542 ns/iter (± 284) 1.01
es/full/codegen/es2019 59313 ns/iter (± 337) 58568 ns/iter (± 99) 1.01
es/full/codegen/es2020 59393 ns/iter (± 277) 58721 ns/iter (± 158) 1.01
es/full/all/es3 162890821 ns/iter (± 533522) 162922997 ns/iter (± 1254414) 1.00
es/full/all/es5 157716173 ns/iter (± 926047) 158096046 ns/iter (± 3796798) 1.00
es/full/all/es2015 116971013 ns/iter (± 1404493) 116915695 ns/iter (± 1027195) 1.00
es/full/all/es2016 116163333 ns/iter (± 881327) 116397150 ns/iter (± 432473) 1.00
es/full/all/es2017 115041876 ns/iter (± 1226725) 115261922 ns/iter (± 848059) 1.00
es/full/all/es2018 113537491 ns/iter (± 837830) 113255917 ns/iter (± 629242) 1.00
es/full/all/es2019 113090057 ns/iter (± 2496180) 113079870 ns/iter (± 910388) 1.00
es/full/all/es2020 109134308 ns/iter (± 952149) 108291781 ns/iter (± 720034) 1.01
es/full/parser 478254 ns/iter (± 4483) 475759 ns/iter (± 2482) 1.01
es/full/base/fixer 16797 ns/iter (± 260) 16365 ns/iter (± 55) 1.03
es/full/base/resolver_and_hygiene 79662 ns/iter (± 200) 80734 ns/iter (± 550) 0.99
serialization of serde 277 ns/iter (± 5) 276 ns/iter (± 2) 1.00
css/minify/libraries/bootstrap 21919352 ns/iter (± 211209) 22001257 ns/iter (± 31249) 1.00
css/visitor/compare/clone 1353881 ns/iter (± 20146) 1371317 ns/iter (± 14753) 0.99
css/visitor/compare/visit_mut_span 1484530 ns/iter (± 7646) 1482298 ns/iter (± 5926) 1.00
css/visitor/compare/visit_mut_span_panic 1515848 ns/iter (± 59639) 1504031 ns/iter (± 35796) 1.01
css/visitor/compare/fold_span 1986963 ns/iter (± 4731) 1995948 ns/iter (± 8099) 1.00
css/visitor/compare/fold_span_panic 2108204 ns/iter (± 2602) 2129802 ns/iter (± 5748) 0.99
css/lexer/bootstrap_5_1_3 3494263 ns/iter (± 1057) 3455302 ns/iter (± 85447) 1.01
css/lexer/foundation_6_7_4 2813257 ns/iter (± 3559) 2781711 ns/iter (± 3014) 1.01
css/lexer/tailwind_3_1_1 539153 ns/iter (± 129) 535454 ns/iter (± 190) 1.01
css/parser/bootstrap_5_1_3 16007183 ns/iter (± 18958) 16325385 ns/iter (± 45918) 0.98
css/parser/foundation_6_7_4 12803811 ns/iter (± 34115) 13104512 ns/iter (± 61348) 0.98
css/parser/tailwind_3_1_1 2530747 ns/iter (± 2479) 2589993 ns/iter (± 17947) 0.98
es/codegen/colors 727678 ns/iter (± 400497) 729250 ns/iter (± 398410) 1.00
es/codegen/large 3013102 ns/iter (± 1596871) 3029891 ns/iter (± 1603238) 0.99
es/codegen/with-parser/colors 40424 ns/iter (± 418) 40196 ns/iter (± 156) 1.01
es/codegen/with-parser/large 450806 ns/iter (± 8832) 450082 ns/iter (± 1828) 1.00
es/minify/libraries/antd 1510104554 ns/iter (± 33285115) 1560140206 ns/iter (± 26728486) 0.97
es/minify/libraries/d3 286176009 ns/iter (± 12772893) 301983350 ns/iter (± 5858312) 0.95
es/minify/libraries/echarts 1243859535 ns/iter (± 44584736) 1295038227 ns/iter (± 13470316) 0.96
es/minify/libraries/jquery 82887252 ns/iter (± 782802) 84231286 ns/iter (± 492836) 0.98
es/minify/libraries/lodash 104503489 ns/iter (± 513308) 105537249 ns/iter (± 455399) 0.99
es/minify/libraries/moment 48442281 ns/iter (± 129840) 49067010 ns/iter (± 296606) 0.99
es/minify/libraries/react 16261389 ns/iter (± 41234) 16372134 ns/iter (± 44897) 0.99
es/minify/libraries/terser 222326050 ns/iter (± 4740407) 227480694 ns/iter (± 2087222) 0.98
es/minify/libraries/three 387297937 ns/iter (± 18490903) 404841473 ns/iter (± 6755582) 0.96
es/minify/libraries/typescript 2806027602 ns/iter (± 28943831) 2861201047 ns/iter (± 28786694) 0.98
es/minify/libraries/victory 612576410 ns/iter (± 29805730) 676733147 ns/iter (± 11694955) 0.91
es/minify/libraries/vue 121789874 ns/iter (± 914255) 124005943 ns/iter (± 736756) 0.98
es/visitor/compare/clone 1712096 ns/iter (± 4255) 1718442 ns/iter (± 12248) 1.00
es/visitor/compare/visit_mut_span 2059906 ns/iter (± 9136) 2055571 ns/iter (± 6667) 1.00
es/visitor/compare/visit_mut_span_panic 2056428 ns/iter (± 10596) 2076730 ns/iter (± 29859) 0.99
es/visitor/compare/fold_span 2783268 ns/iter (± 4214) 2806083 ns/iter (± 11414) 0.99
es/visitor/compare/fold_span_panic 2819426 ns/iter (± 5551) 2837815 ns/iter (± 9490) 0.99
es/lexer/colors 9437 ns/iter (± 88) 9964 ns/iter (± 71) 0.95
es/lexer/angular 5116749 ns/iter (± 25345) 5114218 ns/iter (± 50193) 1.00
es/lexer/backbone 659645 ns/iter (± 8460) 669912 ns/iter (± 849) 0.98
es/lexer/jquery 3644491 ns/iter (± 10264) 3829004 ns/iter (± 5321) 0.95
es/lexer/jquery mobile 5468772 ns/iter (± 34263) 5657141 ns/iter (± 13073) 0.97
es/lexer/mootools 2909139 ns/iter (± 21785) 2932071 ns/iter (± 3826) 0.99
es/lexer/underscore 539605 ns/iter (± 2509) 589167 ns/iter (± 2270) 0.92
es/lexer/three 16434830 ns/iter (± 74050) 17393757 ns/iter (± 119864) 0.94
es/lexer/yui 2882127 ns/iter (± 30924) 3044091 ns/iter (± 6723) 0.95
es/lexer/cal-com 13321421 ns/iter (± 77940) 13593923 ns/iter (± 92937) 0.98
es/lexer/typescript 93038819 ns/iter (± 430638) 95785997 ns/iter (± 456665) 0.97
es/parser/colors 23821 ns/iter (± 57) 23877 ns/iter (± 161) 1.00
es/parser/angular 12657830 ns/iter (± 137891) 12689114 ns/iter (± 143296) 1.00
es/parser/backbone 1843644 ns/iter (± 8282) 1842336 ns/iter (± 4416) 1.00
es/parser/jquery 10367822 ns/iter (± 68835) 10381838 ns/iter (± 149545) 1.00
es/parser/jquery mobile 15447456 ns/iter (± 110555) 15584720 ns/iter (± 206433) 0.99
es/parser/mootools 8031705 ns/iter (± 36525) 7973991 ns/iter (± 44350) 1.01
es/parser/underscore 1631969 ns/iter (± 7648) 1614765 ns/iter (± 4823) 1.01
es/parser/three 44682682 ns/iter (± 459280) 45968967 ns/iter (± 723350) 0.97
es/parser/yui 7511590 ns/iter (± 42707) 7567655 ns/iter (± 41126) 0.99
es/parser/cal-com 42652886 ns/iter (± 582888) 42610258 ns/iter (± 541838) 1.00
es/parser/typescript 275328989 ns/iter (± 1178923) 278753391 ns/iter (± 3853739) 0.99
es/preset-env/usage/builtin_type 135625 ns/iter (± 33539) 135964 ns/iter (± 34001) 1.00
es/preset-env/usage/property 16270 ns/iter (± 210) 15719 ns/iter (± 93) 1.04
es/resolver/typescript 99528628 ns/iter (± 2182235) 100578247 ns/iter (± 3147014) 0.99
es/fixer/typescript 81536542 ns/iter (± 3514439) 82242350 ns/iter (± 2170640) 0.99
es/hygiene/typescript 181858324 ns/iter (± 3727808) 174580922 ns/iter (± 2900992) 1.04
es/resolver_with_hygiene/typescript 315159181 ns/iter (± 4308516) 307567120 ns/iter (± 7043212) 1.02
es/visitor/base-perf/module_clone 56688 ns/iter (± 1544) 57874 ns/iter (± 3626) 0.98
es/visitor/base-perf/fold_empty 59996 ns/iter (± 890) 60548 ns/iter (± 487) 0.99
es/visitor/base-perf/fold_noop_impl_all 60096 ns/iter (± 717) 60706 ns/iter (± 1115) 0.99
es/visitor/base-perf/fold_noop_impl_vec 59636 ns/iter (± 307) 60672 ns/iter (± 796) 0.98
es/visitor/base-perf/boxing_boxed_clone 59 ns/iter (± 0) 61 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_unboxed_clone 47 ns/iter (± 0) 47 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 109 ns/iter (± 0) 106 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 79 ns/iter (± 0) 1.03
es/visitor/base-perf/visit_contains_this 2565 ns/iter (± 10) 2647 ns/iter (± 25) 0.97
es/base/parallel/resolver/typescript 2436122717 ns/iter (± 104087410) 2483188664 ns/iter (± 120399890) 0.98
es/base/parallel/hygiene/typescript 3202408734 ns/iter (± 53785826) 3249440678 ns/iter (± 91926304) 0.99
babelify-only 497921 ns/iter (± 2463) 489241 ns/iter (± 10572) 1.02
parse_and_babelify_angular 41707222 ns/iter (± 662078) 39841392 ns/iter (± 2516314) 1.05
parse_and_babelify_backbone 4363187 ns/iter (± 77923) 4407504 ns/iter (± 124330) 0.99
parse_and_babelify_jquery 28518612 ns/iter (± 182521) 29276177 ns/iter (± 732037) 0.97
parse_and_babelify_jquery_mobile 49986921 ns/iter (± 932465) 50786452 ns/iter (± 866112) 0.98
parse_and_babelify_mootools 26525056 ns/iter (± 750054) 26695904 ns/iter (± 619230) 0.99
parse_and_babelify_underscore 3694386 ns/iter (± 9614) 3707891 ns/iter (± 18992) 1.00
parse_and_babelify_yui 24189822 ns/iter (± 1177250) 27539288 ns/iter (± 2212349) 0.88
html/minify/document/css_spec 46562394 ns/iter (± 2169388) 46319230 ns/iter (± 1050178) 1.01
html/minify/document/github 18187164 ns/iter (± 56942) 18412353 ns/iter (± 181885) 0.99
html/minify/document/stackoverflow 16709717 ns/iter (± 593363) 16743124 ns/iter (± 566578) 1.00
html/minify/document_fragment/css_spec 45785442 ns/iter (± 313295) 45012627 ns/iter (± 390755) 1.02
html/minify/document_fragment/github 17979810 ns/iter (± 254235) 18137251 ns/iter (± 175072) 0.99
html/minify/document_fragment/stackoverflow 16297047 ns/iter (± 67967) 16386123 ns/iter (± 150628) 0.99
html/document/visitor/compare/clone 166699 ns/iter (± 2270) 168284 ns/iter (± 1360) 0.99
html/document/visitor/compare/visit_mut_span 184474 ns/iter (± 878) 184502 ns/iter (± 1312) 1.00
html/document/visitor/compare/visit_mut_span_panic 193579 ns/iter (± 9127) 190309 ns/iter (± 860) 1.02
html/document/visitor/compare/fold_span 231725 ns/iter (± 1260) 231129 ns/iter (± 1553) 1.00
html/document/visitor/compare/fold_span_panic 279346 ns/iter (± 880) 282290 ns/iter (± 589) 0.99
html/document_fragment/visitor/compare/clone 167530 ns/iter (± 1006) 169056 ns/iter (± 988) 0.99
html/document_fragment/visitor/compare/visit_mut_span 183778 ns/iter (± 1173) 184676 ns/iter (± 791) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 189919 ns/iter (± 608) 190255 ns/iter (± 1174) 1.00
html/document_fragment/visitor/compare/fold_span 233322 ns/iter (± 954) 231362 ns/iter (± 1863) 1.01
html/document_fragment/visitor/compare/fold_span_panic 286141 ns/iter (± 1177) 282406 ns/iter (± 12605) 1.01
html/lexer/css_2021_spec 13081368 ns/iter (± 25015) 12879729 ns/iter (± 204373) 1.02
html/lexer/github_com_17_05_2022 5003399 ns/iter (± 20141) 4943951 ns/iter (± 6642) 1.01
html/lexer/stackoverflow_com_17_05_2022 4734435 ns/iter (± 14171) 4679886 ns/iter (± 9224) 1.01
html/parser/parser_document/css_2021_spec 25826317 ns/iter (± 1332461) 25312165 ns/iter (± 174433) 1.02
html/parser/parser_document/github_com_17_05_2022 8473348 ns/iter (± 56281) 8406845 ns/iter (± 53175) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7421874 ns/iter (± 11470) 7318257 ns/iter (± 11762) 1.01
html/parser/parser_document_fragment/css_2021_spec 25715673 ns/iter (± 125714) 25031265 ns/iter (± 89925) 1.03
html/parser/parser_document_fragment/github_com_17_05_2022 8399949 ns/iter (± 19419) 8375192 ns/iter (± 15186) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7381717 ns/iter (± 15317) 7292847 ns/iter (± 16375) 1.01

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

Please sign in to comment.