From cf1f4577b5baf3936e26b67a35cdcba621757b58 Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Fri, 9 Dec 2022 10:44:28 -0500 Subject: src/frontend: start work on wasiterm Signed-off-by: Xe Iaso --- src/frontend/build.sh | 5 +++-- src/frontend/deno.lock | 11 +++++++++++ src/frontend/deps.ts | 10 +++++++--- src/frontend/lock.json | 11 ----------- src/frontend/wasiterm.tsx | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 src/frontend/deno.lock delete mode 100644 src/frontend/lock.json create mode 100644 src/frontend/wasiterm.tsx (limited to 'src/frontend') diff --git a/src/frontend/build.sh b/src/frontend/build.sh index 0f5859a..33577ae 100755 --- a/src/frontend/build.sh +++ b/src/frontend/build.sh @@ -1,11 +1,12 @@ #!/usr/bin/env bash denobuild() { - deno cache --import-map=./import_map.json --lock lock.json --lock-write *.tsx deps.ts - deno bundle --import-map=./import_map.json --lock lock.json $1 $2 + deno cache --import-map=./import_map.json --lock deno.lock --lock-write *.tsx deps.ts + deno bundle --import-map=./import_map.json --lock deno.lock $1 $2 } set -e export RUST_LOG=info denobuild ./mastodon_share_button.tsx ../../static/js/mastodon_share_button.js +denobuild ./wasiterm.tsx ../../static/js/wasiterm.js diff --git a/src/frontend/deno.lock b/src/frontend/deno.lock new file mode 100644 index 0000000..01f35a5 --- /dev/null +++ b/src/frontend/deno.lock @@ -0,0 +1,11 @@ +{ + "version": "2", + "remote": { + "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.d.ts": "0e202696f693f922ed63e1f372dd7b4641ce587d357fcf32de3d09cb48785867", + "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.js": "33c58765ded371211b754157955a7ab1d2de921a9c8fee8748112d25605726dd", + "https://deno.land/x/wasm@v1.2.2/wasi.ts": "4fde34f8fa8c52af06adcc241f1b18fabf2df0d8b1f1b62d05e70377688a8fcb", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/jsx-runtime.js": "a8e0e04c44bbc80bb0a8c59e1d3ee338dd799e25e89792cadb67f00bf4f6ceca", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.js": "4b943b147cddd20b514b0cf85c68438e585712e809d8da4283ee5f0b8ac1ab8d", + "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.ts": "b6def4bebff19548539f4708cff028cd1fd7abdf6bfd7b3cd8dd5025b97d676e" + } +} diff --git a/src/frontend/deps.ts b/src/frontend/deps.ts index db03865..d885509 100644 --- a/src/frontend/deps.ts +++ b/src/frontend/deps.ts @@ -1,6 +1,10 @@ import * as wasi from "https://deno.land/x/wasm@v1.2.2/wasi.ts"; -import * as xeact from "xeact"; +//import * as xterm from "https://esm.sh/xterm@5.0.0"; -await wasi.init(); +import * as xeact from "xeact"; -export { wasi, xeact }; +export { + wasi, + xeact, + //xterm +}; diff --git a/src/frontend/lock.json b/src/frontend/lock.json deleted file mode 100644 index 01f35a5..0000000 --- a/src/frontend/lock.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "2", - "remote": { - "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.d.ts": "0e202696f693f922ed63e1f372dd7b4641ce587d357fcf32de3d09cb48785867", - "https://deno.land/x/wasm@v1.2.2/pkg/wasmer_wasi_js.js": "33c58765ded371211b754157955a7ab1d2de921a9c8fee8748112d25605726dd", - "https://deno.land/x/wasm@v1.2.2/wasi.ts": "4fde34f8fa8c52af06adcc241f1b18fabf2df0d8b1f1b62d05e70377688a8fcb", - "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/jsx-runtime.js": "a8e0e04c44bbc80bb0a8c59e1d3ee338dd799e25e89792cadb67f00bf4f6ceca", - "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.js": "4b943b147cddd20b514b0cf85c68438e585712e809d8da4283ee5f0b8ac1ab8d", - "https://xena.greedo.xeserv.us/pkg/xeact/v0.69.71/xeact.ts": "b6def4bebff19548539f4708cff028cd1fd7abdf6bfd7b3cd8dd5025b97d676e" - } -} diff --git a/src/frontend/wasiterm.tsx b/src/frontend/wasiterm.tsx new file mode 100644 index 0000000..352d03c --- /dev/null +++ b/src/frontend/wasiterm.tsx @@ -0,0 +1,50 @@ +import { wasi as wasiMod, xeact } from "./deps.ts"; + +const { x, t } = xeact; +//const { Terminal } = xterm; +const { WASI } = wasiMod; + +const init = async (rootElem: Element, wasmURL: string) => { + const termElem = ; + + //const term = new Terminal(); + //term.open(termElem); + + const runProgram = async () => { + await wasiMod.init(new URL("https://cdn.xeiaso.net/file/christine-static/wasm/5410143de81b20061e9750d1cf80aceef56d2938ab949e30dd7b13fa699307ad.wasm")); + + termElem.appendChild(t(`loading ${wasmURL}`)); + + const wasi = new WASI({ + env: { + "HOSTNAME": "pyra", + }, + }) + + const moduleBytes = fetch(wasmURL); + const module = await WebAssembly.compileStreaming(moduleBytes); + await wasi.instantiate(module, {}); + //term.writeln("executing"); + termElem.appendChild(t("executing")); + let exitCode = wasi.start(); + let stdout = wasi.getStdoutString(); + console.log(`${stdout}\n\n(exit code: ${exitCode})`); + termElem.appendChild(t(`${stdout}\n\n(exit code: ${exitCode})`)); + }; + + const runButton = ; + + const root =
+ + {runButton} +
{termElem}
+
; + + x(rootElem); + rootElem.appendChild(root); + + //term.writeln(`loading ${wasmURL}`); + //term.writeln(`${stdout}\n\n(exit code: ${exitCode})`); +} + +export { init }; -- cgit v1.2.3