#!/usr/bin/env node // SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later import { createServer } from 'http'; import { readFile } from 'fs'; import { join } from 'path'; console.log(`dont forget to run: "npm --global install @jdmichaud/dwarf-2-sourcemap" for better debugging!`); const server = createServer((req, res) => { console.log(`get ${req.url}`); if (req.url === '/') { // https://developer.mozilla.org/en-US/docs/WebAssembly/Guides/Loading_and_running // If your browser doesn't support fetch... HAHA GET FUCKED res.writeHead(200, { 'Content-Type': 'text/html', 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }); res.end(` eden-cli
`); } else if (req.url === '/eden-cli.js') { readFile(join(build_dir, 'eden-cli.js'), (err, content) => { res.writeHead(200, { 'Content-Type': 'application/javascript', 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }); res.end(content, 'utf-8'); }); } else if (req.url === '/eden-cli.wasm') { readFile(join(build_dir, 'eden-cli.wasm'), (err, content) => { res.writeHead(200, { 'Content-Type': 'application/wasm', 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }); res.end(content); }); } else if (req.url === '/game.nro') { readFile(nro_file, (err, content) => { res.writeHead(200, { 'Content-Type': 'application/octet-stream', 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': 'require-corp' }); res.end(content); }); } else { res.writeHead(404, {}); res.end('', 'utf-8'); } }); const build_dir = process.argv[2]; const nro_file = process.argv[3]; if (typeof build_dir == "undefined" || typeof nro_file == "undefined") { console.log(`Usage: ${process.argv[0]} ${process.argv[1]} [build directory] [NRO file]`); } else { server.listen(2210, () => { console.log(`${process.argv[0]} ${process.argv[1]} http://localhost:2210`); console.log(`build dir = ${build_dir}`); }); }