some stuff
This commit is contained in:
parent
08ad294d46
commit
6cbf15b783
11 changed files with 165 additions and 5 deletions
42
serve.ts
Normal file
42
serve.ts
Normal file
|
@ -0,0 +1,42 @@
|
|||
|
||||
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<void>) {
|
||||
let timeoutId: ReturnType<typeof setTimeout> | 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()
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue