From 587f2e0800a55e58b2579758d4278a4129b609c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 1 Nov 2023 21:30:23 +0100 Subject: feat: precompile JSX (#20962) Co-authored-by: Marvin Hagemeister --- cli/tests/testdata/jsx/deno-jsx-precompile.jsonc | 6 ++++++ cli/tests/testdata/jsx/import-map.json | 3 ++- cli/tests/testdata/jsx/jsx-precompile/index.ts | 23 ++++++++++++++++++++++ .../testdata/run/jsx_precompile/no_pragma.out | 3 +++ .../testdata/run/jsx_precompile/no_pragma.tsx | 3 +++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 cli/tests/testdata/jsx/deno-jsx-precompile.jsonc create mode 100644 cli/tests/testdata/jsx/jsx-precompile/index.ts create mode 100644 cli/tests/testdata/run/jsx_precompile/no_pragma.out create mode 100644 cli/tests/testdata/run/jsx_precompile/no_pragma.tsx (limited to 'cli/tests/testdata') diff --git a/cli/tests/testdata/jsx/deno-jsx-precompile.jsonc b/cli/tests/testdata/jsx/deno-jsx-precompile.jsonc new file mode 100644 index 000000000..95ae1b9f3 --- /dev/null +++ b/cli/tests/testdata/jsx/deno-jsx-precompile.jsonc @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "jsx": "precompile", + "jsxImportSource": "jsx-precompile" + } +} diff --git a/cli/tests/testdata/jsx/import-map.json b/cli/tests/testdata/jsx/import-map.json index baab76f20..1bfa04e2f 100644 --- a/cli/tests/testdata/jsx/import-map.json +++ b/cli/tests/testdata/jsx/import-map.json @@ -1,6 +1,7 @@ { "imports": { "jsx/jsx-runtime": "http://localhost:4545/jsx/jsx-runtime/index.ts", - "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts" + "jsx/jsx-dev-runtime": "http://localhost:4545/jsx/jsx-dev-runtime/index.ts", + "jsx-precompile/jsx-runtime": "http://localhost:4545/jsx/jsx-precompile/index.ts" } } diff --git a/cli/tests/testdata/jsx/jsx-precompile/index.ts b/cli/tests/testdata/jsx/jsx-precompile/index.ts new file mode 100644 index 000000000..0d56095e0 --- /dev/null +++ b/cli/tests/testdata/jsx/jsx-precompile/index.ts @@ -0,0 +1,23 @@ +// deno-lint-ignore-file no-explicit-any +export function jsx( + _type: any, + _props: any, + _key: any, + _source: any, + _self: any, +) {} +// deno-lint-ignore-file no-explicit-any +export const jsxAttr = (name: string, value: any) => `${name}="${value}"`; +// deno-lint-ignore-file no-explicit-any +export const jsxTemplate = (_template: string[], ..._exprs: any[]) => ""; +// deno-lint-ignore-file no-explicit-any +export const jsxEscape = (_value: any) => ""; +console.log("imported", import.meta.url); + +declare global { + namespace JSX { + interface IntrinsicElements { + [tagName: string]: Record; + } + } +} diff --git a/cli/tests/testdata/run/jsx_precompile/no_pragma.out b/cli/tests/testdata/run/jsx_precompile/no_pragma.out new file mode 100644 index 000000000..437995923 --- /dev/null +++ b/cli/tests/testdata/run/jsx_precompile/no_pragma.out @@ -0,0 +1,3 @@ +Download http://localhost:4545/jsx/jsx-precompile/index.ts +Check file:///[WILDCARD]/run/jsx_precompile/no_pragma.tsx +imported http://localhost:4545/jsx/jsx-precompile/index.ts diff --git a/cli/tests/testdata/run/jsx_precompile/no_pragma.tsx b/cli/tests/testdata/run/jsx_precompile/no_pragma.tsx new file mode 100644 index 000000000..7ba21d80d --- /dev/null +++ b/cli/tests/testdata/run/jsx_precompile/no_pragma.tsx @@ -0,0 +1,3 @@ +export function A() { + return

hello

; +} -- cgit v1.2.3