diff options
author | Alan Pearce | 2024-04-01 19:40:45 +0200 |
---|---|---|
committer | Alan Pearce | 2024-04-01 19:41:36 +0200 |
commit | ed1d0c35da6be9d9aadbdacb38fff36b90742de1 (patch) | |
tree | 396c11eada635b61a2a7e3f3ca7db07a8fdd8161 | |
parent | 038ba7ae4f6b56ae334d2351ac810c1ef23d8705 (diff) | |
download | website-ed1d0c35da6be9d9aadbdacb38fff36b90742de1.tar.lz website-ed1d0c35da6be9d9aadbdacb38fff36b90742de1.tar.zst website-ed1d0c35da6be9d9aadbdacb38fff36b90742de1.zip |
Simplify walkDirectory by using recursive readdir
-rw-r--r-- | src/app.ts | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/src/app.ts b/src/app.ts index ac11c4d..e0fe2e8 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,5 +1,6 @@ import path from "node:path"; -import fs, { Stats } from "node:fs"; +import fs from "node:fs/promises"; +import type { Stats } from "node:fs"; import type { BunFile, Serve } from "bun"; import * as Sentry from "@sentry/node"; import prom from "bun-prometheus-client"; @@ -73,21 +74,14 @@ function registerFile( }); } -function walkDirectory(root: string, dir: string) { - const absDir = path.join(root, dir); - for (let pathname of fs.readdirSync(absDir)) { - const relPath = path.join(dir, pathname); - const absPath = path.join(absDir, pathname); - const stat = fs.statSync(absPath); - if (stat.isDirectory()) { - walkDirectory(root, relPath + path.sep); - } else if (stat.isFile()) { - if (pathname.startsWith("index.html")) { +async function walkDirectory(root: string) { + for (let relPath of await fs.readdir(root, { recursive: true })) { + const absPath = path.join(root, relPath); + const stat = await fs.stat(absPath); + if (stat.isFile()) { + if (relPath.endsWith("index.html")) { const dir = relPath.replace("index.html", ""); registerFile(relPath, dir, absPath, stat); - if (dir !== "") { - registerFile(relPath, dir + path.sep, absPath, stat); - } } else { registerFile(relPath, relPath, absPath, stat); } @@ -95,7 +89,7 @@ function walkDirectory(root: string, dir: string) { } } -walkDirectory("public/", ""); +await walkDirectory("public/"); async function serveFile( file: File, |