aboutsummaryrefslogtreecommitdiff
path: root/bench/snippets
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-01-19 23:07:03 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-01-19 23:07:03 -0800
commita09b99565138bb4bc73a5328397428fb5025817b (patch)
tree3412ae330b4a6078173d0048665b9d547b3d718b /bench/snippets
parent4098484ff5d1c66a5f146e773a9be25cbcd2a1f4 (diff)
downloadbun-a09b99565138bb4bc73a5328397428fb5025817b.tar.gz
bun-a09b99565138bb4bc73a5328397428fb5025817b.tar.zst
bun-a09b99565138bb4bc73a5328397428fb5025817b.zip
Bun.Transpiler – API for scanning imports/exports of JSX/TSX/TS/JS files
Diffstat (limited to 'bench/snippets')
-rwxr-xr-xbench/snippets/scanner/bun.lockbbin0 -> 6186 bytes
-rw-r--r--bench/snippets/scanner/package.json6
-rw-r--r--bench/snippets/scanner/remix-route.ts15
-rw-r--r--bench/snippets/scanner/scan-imports-only.js15
-rw-r--r--bench/snippets/scanner/scan.bun.js23
-rw-r--r--bench/snippets/scanner/scan.node-esbuild.mjs37
6 files changed, 96 insertions, 0 deletions
diff --git a/bench/snippets/scanner/bun.lockb b/bench/snippets/scanner/bun.lockb
new file mode 100755
index 000000000..90bb78996
--- /dev/null
+++ b/bench/snippets/scanner/bun.lockb
Binary files differ
diff --git a/bench/snippets/scanner/package.json b/bench/snippets/scanner/package.json
new file mode 100644
index 000000000..7bb4e8990
--- /dev/null
+++ b/bench/snippets/scanner/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "scan",
+ "dependencies": {
+ "esbuild": "^0.14.11"
+ }
+} \ No newline at end of file
diff --git a/bench/snippets/scanner/remix-route.ts b/bench/snippets/scanner/remix-route.ts
new file mode 100644
index 000000000..dbacf3a4c
--- /dev/null
+++ b/bench/snippets/scanner/remix-route.ts
@@ -0,0 +1,15 @@
+import { useParams } from "remix";
+import type { LoaderFunction, ActionFunction } from "remix";
+
+export const loader: LoaderFunction = async ({ params }) => {
+ console.log(params.postId);
+};
+
+export const action: ActionFunction = async ({ params }) => {
+ console.log(params.postId);
+};
+
+export default function PostRoute() {
+ const params = useParams();
+ console.log(params.postId);
+}
diff --git a/bench/snippets/scanner/scan-imports-only.js b/bench/snippets/scanner/scan-imports-only.js
new file mode 100644
index 000000000..53222d57c
--- /dev/null
+++ b/bench/snippets/scanner/scan-imports-only.js
@@ -0,0 +1,15 @@
+import { readFileSync } from "fs";
+const fixture = ["action", "default", "loader"];
+
+const transpiler = new Bun.Transpiler({
+ loader: "ts",
+});
+
+console.time("Get exports");
+const ITERATIONS = parseInt(process.env.ITERATIONS || "1") || 1;
+for (let i = 0; i < ITERATIONS; i++) {
+ const imports = transpiler.scanImports(
+ readFileSync("remix-route.ts", "utf8")
+ );
+}
+console.timeEnd("Get exports");
diff --git a/bench/snippets/scanner/scan.bun.js b/bench/snippets/scanner/scan.bun.js
new file mode 100644
index 000000000..7a34f056e
--- /dev/null
+++ b/bench/snippets/scanner/scan.bun.js
@@ -0,0 +1,23 @@
+import { readFileSync } from "fs";
+const fixture = ["action", "default", "loader"];
+const ITERATIONS = parseInt(process.env.ITERATIONS || "1") || 1;
+
+const transpiler = new Bun.Transpiler({
+ loader: "ts",
+});
+
+console.time("Get exports");
+
+for (let i = 0; i < ITERATIONS; i++) {
+ const { imports, exports } = transpiler.scan(
+ readFileSync("remix-route.ts", "utf8")
+ );
+
+ for (let j = 0; j < fixture.length; j++) {
+ if (fixture[j] !== exports[j]) {
+ throw new Error("Mismatch");
+ }
+ }
+}
+
+console.timeEnd("Get exports");
diff --git a/bench/snippets/scanner/scan.node-esbuild.mjs b/bench/snippets/scanner/scan.node-esbuild.mjs
new file mode 100644
index 000000000..946250d1f
--- /dev/null
+++ b/bench/snippets/scanner/scan.node-esbuild.mjs
@@ -0,0 +1,37 @@
+import { build, buildSync } from "esbuild";
+const fixture = ["action", "default", "loader"];
+const ITERATIONS = parseInt(process.env.ITERATIONS || "1") || 1;
+
+const opts = {
+ metafile: true,
+ format: "esm",
+ platform: "neutral",
+ write: false,
+ logLevel: "silent",
+ entryPoints: ["remix-route.ts"],
+};
+
+const getExports = ({ metafile }) => {
+ for (let i = 0; i < fixture.length; i++) {
+ if (fixture[i] !== metafile.outputs["remix-route.js"].exports[i]) {
+ throw new Error("Mismatch");
+ }
+ }
+};
+
+console.time("Get exports");
+
+if (!process.env.SYNC) {
+ var promises = new Array(ITERATIONS);
+ for (let i = 0; i < ITERATIONS; i++) {
+ promises[i] = build(opts).then(getExports);
+ }
+
+ await Promise.all(promises);
+} else {
+ for (let i = 0; i < ITERATIONS; i++) {
+ getExports(buildSync(opts));
+ }
+}
+
+console.timeEnd("Get exports");