aboutsummaryrefslogtreecommitdiff
path: root/bench/snippets/transpiler.mjs
diff options
context:
space:
mode:
authorGravatar evan <github@evan.lol> 2022-07-12 04:40:12 -0400
committerGravatar GitHub <noreply@github.com> 2022-07-12 01:40:12 -0700
commita9e4ff2029a769737982fcf7e0b7d76d35cf35e4 (patch)
tree497832408d926e2bed779fcec4ba655624a29792 /bench/snippets/transpiler.mjs
parent7eea306b0ff46a27f134809a9b3c12bf4b38fa7e (diff)
downloadbun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.tar.gz
bun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.tar.zst
bun-a9e4ff2029a769737982fcf7e0b7d76d35cf35e4.zip
cleanup benchmarks folder (#587)
* cleanup benchmarks * run prettier
Diffstat (limited to 'bench/snippets/transpiler.mjs')
-rw-r--r--bench/snippets/transpiler.mjs58
1 files changed, 58 insertions, 0 deletions
diff --git a/bench/snippets/transpiler.mjs b/bench/snippets/transpiler.mjs
new file mode 100644
index 000000000..6872d88b7
--- /dev/null
+++ b/bench/snippets/transpiler.mjs
@@ -0,0 +1,58 @@
+import { readFileSync } from "fs";
+
+var transformSync;
+var transform;
+var opts;
+if (process.isBun) {
+ const transpiler = new Bun.Transpiler({ loader: "jsx" });
+ transformSync = transpiler.transformSync.bind(transpiler);
+ transform = transpiler.transform.bind(transpiler);
+ opts = "jsx";
+} else if (process.env["esbuild"]) {
+ try {
+ const esbuild = await import("esbuild");
+ transformSync = esbuild.transformSync;
+ transform = esbuild.transform;
+ opts = { loader: "jsx" };
+ } catch (exception) {
+ throw exception;
+ }
+} else if (process.env["swc"]) {
+ try {
+ const swc = await import("@swc/core");
+ transformSync = swc.transformSync;
+ transform = swc.transform;
+ opts = {
+ sourceMaps: false,
+ inlineSourcesContent: false,
+ jsc: {
+ target: "es2022",
+ parser: {
+ jsx: true,
+ },
+ },
+ };
+ } catch (exception) {
+ throw exception;
+ }
+} else if (process.env["babel"]) {
+ try {
+ const swc = await import("@babel/core");
+ transformSync = swc.transformSync;
+ transform = swc.transform;
+ opts = {
+ sourceMaps: false,
+ presets: [(await import("@babel/preset-react")).default],
+ };
+ } catch (exception) {
+ throw exception;
+ }
+}
+
+const code = readFileSync("src/test/fixtures/simple.jsx", "utf8");
+
+if (process.env.ASYNC) {
+ console.log(await transform(code, opts));
+} else {
+ console.log(transformSync(code, opts));
+}