aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/components/WASITerm.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/components/WASITerm.tsx')
-rw-r--r--src/frontend/components/WASITerm.tsx83
1 files changed, 0 insertions, 83 deletions
diff --git a/src/frontend/components/WASITerm.tsx b/src/frontend/components/WASITerm.tsx
deleted file mode 100644
index 5f7e7f9..0000000
--- a/src/frontend/components/WASITerm.tsx
+++ /dev/null
@@ -1,83 +0,0 @@
-// @jsxImportSource xeact
-// @jsxRuntime automatic
-
-import { t, x } from "xeact";
-import Terminal from "@xterm";
-import * as fitAdd from "@xterm/addon-fit";
-import { Fd, File, PreopenDirectory, WASI } from "@bjorn3/browser_wasi_shim";
-
-class XtermStdio extends Fd {
- term: Terminal;
-
- constructor(term: Terminal) {
- super();
- this.term = term;
- }
-
- fd_write(view8: Uint8Array, iovs: any) {
- let nwritten = 0;
- for (let iovec of iovs) {
- console.log(
- iovec.buf_len,
- iovec.buf_len,
- view8.slice(iovec.buf, iovec.buf + iovec.buf_len),
- );
- let buffer = view8.slice(iovec.buf, iovec.buf + iovec.buf_len);
- this.term.write(buffer);
- nwritten += iovec.buf_len;
- }
- return { ret: 0, nwritten };
- }
-}
-
-const loadExternalFile = async (path: string) => {
- return new File(await (await (await fetch(path)).blob()).arrayBuffer());
-};
-
-export interface WASITermProps {
- href: string;
- env: string[];
- args: string[];
-}
-
-export default function WASITerm({ href, env, args }: WASITermProps) {
- const root = <div style="max-width:80ch;max-height:20ch"></div>;
-
- const term = new Terminal({
- convertEol: true,
- fontFamily: "Iosevka Curly Iaso",
- });
-
- const fit = new fitAdd.default();
- term.loadAddon(fit);
- fit.fit();
-
- return (
- <div>
- {root}
- <button
- onClick={async () => {
- term.writeln(`\x1B[93mfetching ${href}...\x1B[0m`);
- const wasm = await WebAssembly.compileStreaming(fetch(href));
- term.writeln("\x1B[93mdone, instantiating\x1B[0m");
-
- const fds = [
- new XtermStdio(term),
- new XtermStdio(term),
- new XtermStdio(term),
- new PreopenDirectory("/tmp", {}),
- ];
-
- let wasi = new WASI(args, env, fds);
- term.clear();
- // let inst = await WebAssembly.instantiate(wasm, {
- // "wasi_snapshot_preview1": wasi.wasiImport,
- // });
- // wasi.start(inst);
- }}
- >
- Run
- </button>
- </div>
- );
-}