From e7fddba11a7ac5dd5a3906c54269320cfc936bff Mon Sep 17 00:00:00 2001 From: "S. Elliott Johnson" Date: Mon, 24 Mar 2025 17:34:41 -0700 Subject: [PATCH 01/12] typescript --- apps/svelte.dev/vite.config.ts | 2 +- packages/editor/package.json | 3 +- packages/editor/src/lib/Workspace.svelte.ts | 4 ++ .../editor/src/lib/compile-worker/worker.ts | 4 +- packages/repl/package.json | 4 +- .../src/lib/Output/console/Console.svelte | 2 +- .../repl/src/lib/workers/bundler/index.ts | 7 +- .../bundler/plugins/typescript-strip-types.ts | 21 ++++++ packages/typestript/.gitignore | 1 + packages/typestript/package.json | 31 +++++++++ packages/typestript/src/index.ts | 66 +++++++++++++++++++ packages/typestript/tsconfig.json | 20 ++++++ pnpm-lock.yaml | 52 +++++++++++++-- 13 files changed, 206 insertions(+), 11 deletions(-) create mode 100644 packages/repl/src/lib/workers/bundler/plugins/typescript-strip-types.ts create mode 100644 packages/typestript/.gitignore create mode 100644 packages/typestript/package.json create mode 100644 packages/typestript/src/index.ts create mode 100644 packages/typestript/tsconfig.json diff --git a/apps/svelte.dev/vite.config.ts b/apps/svelte.dev/vite.config.ts index e1d4ffc832..c9d89e455d 100644 --- a/apps/svelte.dev/vite.config.ts +++ b/apps/svelte.dev/vite.config.ts @@ -71,7 +71,7 @@ const config: UserConfig = { } }, optimizeDeps: { - exclude: ['@sveltejs/site-kit', '@sveltejs/repl', '@rollup/browser'] + exclude: ['@sveltejs/site-kit', '@sveltejs/repl', '@rollup/browser', 'typestript'] }, ssr: { noExternal: ['@sveltejs/site-kit', '@sveltejs/repl'], diff --git a/packages/editor/package.json b/packages/editor/package.json index 17651a37c3..ea3eabf6e1 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -64,6 +64,7 @@ "dependencies": { "@lezer/highlight": "^1.2.1", "esm-env": "^1.0.0", - "tarparser": "^0.0.4" + "tarparser": "^0.0.4", + "typestript": "workspace:*" } } diff --git a/packages/editor/src/lib/Workspace.svelte.ts b/packages/editor/src/lib/Workspace.svelte.ts index 17e1e2f65b..eb97bda861 100644 --- a/packages/editor/src/lib/Workspace.svelte.ts +++ b/packages/editor/src/lib/Workspace.svelte.ts @@ -577,6 +577,10 @@ export class Workspace { extensions.push(javascript()); break; + case 'ts': + extensions.push(javascript({ typescript: true })); + break; + case 'html': extensions.push(html()); break; diff --git a/packages/editor/src/lib/compile-worker/worker.ts b/packages/editor/src/lib/compile-worker/worker.ts index c00ed75e9f..f3861cac30 100644 --- a/packages/editor/src/lib/compile-worker/worker.ts +++ b/packages/editor/src/lib/compile-worker/worker.ts @@ -3,6 +3,7 @@ import { parseTar } from 'tarparser'; import type { CompileResult } from 'svelte/compiler'; import type { ExposedCompilerOptions, File } from '../Workspace.svelte'; import type { FileDescription } from 'tarparser'; +import { stripTypes } from 'typestript'; // hack for magic-string and Svelte 4 compiler // do not put this into a separate module and import it, would be treeshaken in prod @@ -139,7 +140,8 @@ addEventListener('message', async (event) => { compilerOptions.experimental = { async: true }; } - result = svelte.compileModule(file.contents, compilerOptions); + const { content } = stripTypes(file.contents); + result = svelte.compileModule(content, compilerOptions); } postMessage({ diff --git a/packages/repl/package.json b/packages/repl/package.json index 5ab688c8e7..f3cc26dc66 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -52,6 +52,7 @@ "@sveltejs/package": "^2.0.0", "@sveltejs/vite-plugin-svelte": "4.0.0", "@types/estree": "^1.0.5", + "magic-string": "^0.30.11", "prettier": "^3.3.2", "prettier-plugin-svelte": "^3.3.2", "publint": "^0.2.12", @@ -87,6 +88,7 @@ "resolve.exports": "^2.0.2", "svelte": "5.23.0", "tarparser": "^0.0.4", - "zimmerframe": "^1.1.2" + "zimmerframe": "^1.1.2", + "typestript": "workspace:*" } } diff --git a/packages/repl/src/lib/Output/console/Console.svelte b/packages/repl/src/lib/Output/console/Console.svelte index cc9471eb29..4c27f3ecec 100644 --- a/packages/repl/src/lib/Output/console/Console.svelte +++ b/packages/repl/src/lib/Output/console/Console.svelte @@ -1,4 +1,4 @@ -