let server: Deno.HttpServer | null = null; async function runScript() { if (server) { await server.shutdown(); } const { startServer } = await import((`./server.ts?cache_bust=${Date.now()}`)); server = startServer("localhost", 6969); } function debounced(fn: () => Promise) { let timeoutId: ReturnType | null; return () => { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(fn, 200); }; } // Watch for file changes async function watchFiles(paths: string[], handler: () => void) { const watcher = Deno.watchFs(paths); for await (const event of watcher) { if (event.kind === "modify" || event.kind === "create") { handler(); } } } async function startup() { // Initial run runScript(); await watchFiles(["."], debounced(runScript)); } if (import.meta.main) { await startup() }