diff --git a/webserial/package-lock.json b/webserial/package-lock.json
index 024a47e..ec5daaa 100644
--- a/webserial/package-lock.json
+++ b/webserial/package-lock.json
@@ -11,6 +11,8 @@
"@sveltejs/vite-plugin-svelte": "^2.0.0",
"@tsconfig/svelte": "^3.0.0",
"@types/w3c-web-serial": "^1.0.3",
+ "monaco-editor": "^0.34.1",
+ "sass": "^1.57.1",
"svelte": "^3.54.0",
"svelte-check": "^2.10.0",
"tslib": "^2.4.1",
@@ -776,6 +778,12 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/immutable": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz",
+ "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==",
+ "dev": true
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -947,6 +955,12 @@
"mkdirp": "bin/cmd.js"
}
},
+ "node_modules/monaco-editor": {
+ "version": "0.34.1",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz",
+ "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==",
+ "dev": true
+ },
"node_modules/mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -1204,6 +1218,23 @@
"rimraf": "^2.5.2"
}
},
+ "node_modules/sass": {
+ "version": "1.57.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
+ "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/sorcery": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
@@ -1948,6 +1979,12 @@
"function-bind": "^1.1.1"
}
},
+ "immutable": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.1.tgz",
+ "integrity": "sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==",
+ "dev": true
+ },
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -2074,6 +2111,12 @@
"minimist": "^1.2.6"
}
},
+ "monaco-editor": {
+ "version": "0.34.1",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz",
+ "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==",
+ "dev": true
+ },
"mri": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -2237,6 +2280,17 @@
"rimraf": "^2.5.2"
}
},
+ "sass": {
+ "version": "1.57.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
+ "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
+ "dev": true,
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ }
+ },
"sorcery": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
diff --git a/webserial/package.json b/webserial/package.json
index 9b22f18..8c6ddaf 100644
--- a/webserial/package.json
+++ b/webserial/package.json
@@ -13,6 +13,8 @@
"@sveltejs/vite-plugin-svelte": "^2.0.0",
"@tsconfig/svelte": "^3.0.0",
"@types/w3c-web-serial": "^1.0.3",
+ "monaco-editor": "^0.34.1",
+ "sass": "^1.57.1",
"svelte": "^3.54.0",
"svelte-check": "^2.10.0",
"tslib": "^2.4.1",
diff --git a/webserial/src/App.svelte b/webserial/src/App.svelte
index 78c0d6f..3b5ebd2 100644
--- a/webserial/src/App.svelte
+++ b/webserial/src/App.svelte
@@ -1,10 +1,28 @@
dbg: "{dbg}"diff --git a/webserial/src/editor/Monaco.svelte b/webserial/src/editor/Monaco.svelte new file mode 100644 index 0000000..f19343f --- /dev/null +++ b/webserial/src/editor/Monaco.svelte @@ -0,0 +1,50 @@ + + + + + diff --git a/webserial/src/editor/code.ts b/webserial/src/editor/code.ts new file mode 100644 index 0000000..2b329af --- /dev/null +++ b/webserial/src/editor/code.ts @@ -0,0 +1,6 @@ +import { writable } from "svelte/store"; +import defaultCode from "./defaultCode.ts?raw"; +import TS from "typescript"; + +/** the transpiled JavaScript code */ +export const code = writable(TS.transpile(defaultCode, {strict: true})); \ No newline at end of file diff --git a/webserial/src/editor/defaultCode.ts b/webserial/src/editor/defaultCode.ts new file mode 100644 index 0000000..9c5bd09 --- /dev/null +++ b/webserial/src/editor/defaultCode.ts @@ -0,0 +1,4 @@ +// ayaya ayaya + +ctx.set(1, 255); +ctx.set(2, 255); \ No newline at end of file diff --git a/webserial/src/editor/defaultEnv.d.ts b/webserial/src/editor/defaultEnv.d.ts new file mode 100644 index 0000000..1d43a76 --- /dev/null +++ b/webserial/src/editor/defaultEnv.d.ts @@ -0,0 +1,9 @@ +type Context = { + set(address: number, value: number): void, +}; + +/** the global Context object */ +declare const ctx: Context; + +/** the current time (in seconds, e.g. 1.25 after 1250 milliseconds) */ +declare const t: number; \ No newline at end of file diff --git a/webserial/src/eval/EvalLoop.svelte b/webserial/src/eval/EvalLoop.svelte new file mode 100644 index 0000000..bedba0d --- /dev/null +++ b/webserial/src/eval/EvalLoop.svelte @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/webserial/src/serial/SerialManager.svelte b/webserial/src/serial/SerialManager.svelte index 9214877..7ed2812 100644 --- a/webserial/src/serial/SerialManager.svelte +++ b/webserial/src/serial/SerialManager.svelte @@ -13,6 +13,7 @@ } +
Serial available 🚀
{#if port !== null} @@ -24,4 +25,11 @@ {:else}Looks like your browser does not support WebSerial 😢
Check here for a list of compatible browsers
-{/if} \ No newline at end of file +{/if} +