import { serve } from "bun"; import index from "./index.html"; // Parse command line arguments for port const args = process.argv.slice(2); const portArgIndex = args.findIndex((arg) => arg === "--port"); const defaultPort = portArgIndex !== -1 && args[portArgIndex + 1] ? parseInt(args[portArgIndex + 1]) : 3000; // Function to find available port async function findAvailablePort(startPort: number): Promise { let port = startPort; while (port < 65535) { try { const testServer = serve({ port: port, fetch() { return new Response("test"); }, }); testServer.stop(); return port; } catch (error) { port++; } } throw new Error("No available port found"); } (async () => { const port = await findAvailablePort(defaultPort); const server = serve({ port: port, routes: { // Serve index.html for all unmatched routes. "/*": index, "/timeline": Response.redirect("/#timeline"), "/ads.txt": new Response( "google.com, pub-4588517451789913, DIRECT, f08c47fec0942fa0", { headers: { "content-type": "text/plain", }, } ), }, development: process.env.NODE_ENV !== "production" && { // Enable browser hot reloading in development hmr: true, // Echo console logs from the browser to the server console: true, }, }); console.clear(); if (process.env.NODE_ENV !== "production") { console.log(`\x1b[45m Dev \x1b[0m\x1b[35m Bun v${Bun.version}\x1b[0m`); } else { console.log(`\x1b[0m\x1b[35m Bun v${Bun.version}\x1b[0m`); } console.log(`\n\x1b[34m→ \x1b[35m${server.url}\x1b[0m`); })();