From 9eac3510fa38373856df0c53420cfdcee8b9295f Mon Sep 17 00:00:00 2001 From: Kai Vogelgesang Date: Thu, 29 Dec 2022 12:59:26 +0100 Subject: [PATCH] Refactor code store to contain non-transpiled TypeScript --- webserial/src/editor/Monaco.svelte | 10 ++-------- webserial/src/editor/code.ts | 6 ++---- webserial/src/eval/EvalLoop.svelte | 6 +++++- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/webserial/src/editor/Monaco.svelte b/webserial/src/editor/Monaco.svelte index 13307da..0b042b5 100644 --- a/webserial/src/editor/Monaco.svelte +++ b/webserial/src/editor/Monaco.svelte @@ -3,18 +3,12 @@ import { onMount } from "svelte"; import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker"; import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker"; - import TS from "typescript"; - import defaultCode from "./defaultCode.ts?raw"; import defaultEnv from "./defaultEnv.d.ts?raw"; import { code } from "./code"; - import tsOptions from "../eval/tsOptions"; let divEl: HTMLDivElement = null; let editor: monaco.editor.IStandaloneCodeEditor; - let value = defaultCode; - $: $code = TS.transpile(value, tsOptions); - onMount(async () => { // @ts-ignore self.MonacoEnvironment = { @@ -27,7 +21,7 @@ }; editor = monaco.editor.create(divEl, { - value: value, + value: $code, language: "typescript", }); @@ -36,7 +30,7 @@ defaultEnv ); - editor.onKeyUp((_e) => (value = editor.getValue())); + editor.onKeyUp((_e) => ($code = editor.getValue())); return () => { lib.dispose(); diff --git a/webserial/src/editor/code.ts b/webserial/src/editor/code.ts index d8f486c..ae09ad1 100644 --- a/webserial/src/editor/code.ts +++ b/webserial/src/editor/code.ts @@ -1,7 +1,5 @@ import { writable } from "svelte/store"; import defaultCode from "./defaultCode.ts?raw"; -import TS from "typescript"; -import tsOptions from "../eval/tsOptions"; -/** the transpiled JavaScript code */ -export const code = writable(TS.transpile(defaultCode, tsOptions)); \ No newline at end of file +/** the TypeScript code as seen in the editor */ +export const code = writable(defaultCode); \ No newline at end of file diff --git a/webserial/src/eval/EvalLoop.svelte b/webserial/src/eval/EvalLoop.svelte index b902bd3..d990d82 100644 --- a/webserial/src/eval/EvalLoop.svelte +++ b/webserial/src/eval/EvalLoop.svelte @@ -4,6 +4,10 @@ import { code } from "../editor/code"; import { dmxData } from "../dmx/store"; import { lib } from "./lib"; + import TS from "typescript"; + import tsOptions from "./tsOptions"; + + $: transpiled = TS.transpile($code, tsOptions); let startTime: number; let payload = new Uint8Array(512); @@ -20,7 +24,7 @@ payload = new Uint8Array(512); const t = (performance.now() - startTime) / 1000; try { - let ret = Function("ctx", "t", "lib", $code).call({}, ctx, t, lib); + let ret = Function("ctx", "t", "lib", transpiled).call({}, ctx, t, lib); result = JSON.stringify(ret); } catch (err) { result = JSON.stringify(err);