Something went wrong. Try again.
Monorepo for the nibling.run platform
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031// Demo page logic for guest node:http: the guest listens on a port, the page waits// for it and mounts an iframe on the /~/@<host>/http/<port>/ virtual origin. ?esm runs the// ESM variant of the server. Runs on the page (host side).import { boot } from "@nibling/kernel";
const out = document.getElementById("out");const errEl = document.getElementById("err");const exitEl = document.getElementById("exit");const dec = new TextDecoder();const entry = new URLSearchParams(location.search).has("esm") ? "/app/server.mjs" : "/app/server.cjs";
try { const runtime = await boot(); const source = await (await fetch(`/demo${entry}`)).text(); runtime.writeTree({ [entry]: source }); const proc = runtime.exec(entry); proc.stdout.pipeTo(new WritableStream({ write: (c) => { out.textContent += dec.decode(c); } })); proc.stderr.pipeTo(new WritableStream({ write: (c) => { errEl.textContent += dec.decode(c); } })); proc.exited.then((code) => { exitEl.textContent = String(code); });
const url = await runtime.waitForPort(3000); const frame = document.createElement("iframe"); frame.id = "app"; frame.title = "guest server on port 3000"; frame.src = url; document.body.append(frame);} catch (e) { errEl.textContent = "BOOT FAILED: " + (e?.message ?? String(e)); exitEl.textContent = "?";}