From a09b99565138bb4bc73a5328397428fb5025817b Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Wed, 19 Jan 2022 23:07:03 -0800 Subject: Bun.Transpiler – API for scanning imports/exports of JSX/TSX/TS/JS files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- integration/bunjs-only-snippets/transpiler.test.js | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 integration/bunjs-only-snippets/transpiler.test.js (limited to 'integration/bunjs-only-snippets/transpiler.test.js') diff --git a/integration/bunjs-only-snippets/transpiler.test.js b/integration/bunjs-only-snippets/transpiler.test.js new file mode 100644 index 000000000..2c59c10b8 --- /dev/null +++ b/integration/bunjs-only-snippets/transpiler.test.js @@ -0,0 +1,51 @@ +import { expect, it, describe } from "bun:test"; + +describe("Bun.Transpiler", () => { + const transpiler = new Bun.Transpiler({ + loader: "tsx", + define: { + "process.env.NODE_ENV": JSON.stringify("development"), + }, + platform: "browser", + }); + + const code = `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); + } + + `; + + describe("scanImports", () => { + it("reports import paths, excluding types", () => { + const imports = transpiler.scanImports(code); + expect(imports.filter(({ path }) => path === "remix")).toHaveLength(1); + }); + }); + + describe("scan", () => { + it("reports all export names", () => { + const { imports, exports } = transpiler.scan(code); + + expect(exports[0]).toBe("loader"); + expect(exports[1]).toBe("action"); + expect(exports[2]).toBe("default"); + expect(exports).toHaveLength(3); + }); + }); +}); -- cgit v1.2.3