Use bun's builtin mime logic
Alan Pearce alan@alanpearce.eu
Wed, 13 Sep 2023 10:16:53 +0200
3 files changed, 3 insertions(+), 10 deletions(-)
M package.json → package.json
@@ -2,7 +2,6 @@ { "name": "homestead", "module": "src/index.ts", "devDependencies": { - "@types/mime-types": "^2.1.1", "bun-html-live-reload": "^0.1.1", "bun-types": "latest" }, @@ -11,7 +10,6 @@ "typescript": "^5.0.0" }, "type": "module", "dependencies": { - "mime-types": "^2.1.35", "toml": "^3.0.0" } }
M src/index.ts → src/index.ts
@@ -2,7 +2,6 @@ import path from "node:path"; import fs, { Stats } from "node:fs"; import fsp from "node:fs/promises"; import { withHtmlLiveReload } from "bun-html-live-reload"; -import mime from "mime-types"; import type { BunFile } from "bun-types"; import readConfig from "./config"; @@ -105,10 +104,6 @@ function parseIfModifiedSinceHeader(header: string | null): number { return header ? new Date(header).getTime() + 999 : 0; } -function getMIME(filename: string): string { - return mime.contentType(path.extname(filename)) || "text/plain"; -} - export default withHtmlLiveReload({ fetch: async function (request) { const pathname = new URL(request.url).pathname; @@ -130,7 +125,7 @@ request.headers.get("user-agent"), ); return serveEncodedFile(files.get(file.relPath + ".br"), 200, { "content-encoding": "br", - "content-type": getMIME(file.filename), + "content-type": file.handle.type, }); } else if ( encodings.includes("zstd") && @@ -138,7 +133,7 @@ files.has(file.relPath + ".zst") ) { return serveEncodedFile(files.get(file.relPath + ".zst"), 200, { "content-encoding": "zstd", - "content-type": getMIME(file.filename), + "content-type": file.handle.type, }); } else if ( encodings.includes("gzip") && @@ -146,7 +141,7 @@ files.has(file.relPath + ".gz") ) { return serveEncodedFile(files.get(file.relPath + ".gz"), 200, { "content-encoding": "gzip", - "content-type": getMIME(file.filename), + "content-type": file.handle.type, }); } }