aboutsummaryrefslogtreecommitdiff
path: root/bench/transpiler.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'bench/transpiler.mjs')
-rw-r--r--bench/transpiler.mjs58
1 files changed, 58 insertions, 0 deletions
diff --git a/bench/transpiler.mjs b/bench/transpiler.mjs
new file mode 100644
index 000000000..6872d88b7
--- /dev/null
+++ b/bench/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));
+}