it was weird. i pressed delete on a subfolder, i think one of the pages.off folders that i was using. and then, suddenly, nvim on windows 7 decided to delete every file in the directory. they weren't shred off the space time continuum, but just marked deleted. i had to pay $80 to get access to a software that could see them. bleh! just seeing all my work, a little over a week, was pretty heart shattering. but i remembered that long ago, a close friend said i could call them whenever i was feeling sad. i finally took them up on that offer. the first time i've ever called someone for emotional support. but it's ok. i got it back. and the site framework is better than ever. i'm gonna commit and push more often. the repo is private anyways.
30 lines
782 B
TypeScript
30 lines
782 B
TypeScript
const db = new Map(
|
|
fs.readFileSync(path.join(import.meta.dirname, "mime.txt"), "utf8")
|
|
.split("\n").filter(Boolean).map((line) =>
|
|
line.split(/\s+/) as [string, string]
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Accepts:
|
|
* - Full file path
|
|
* - Extension (with or without dot)
|
|
*/
|
|
export function contentTypeFor(file: string) {
|
|
if (file.includes("/") || file.includes("\\")) {
|
|
// Some file names are special cased.
|
|
switch (path.basename(file)) {
|
|
case "rss.xml":
|
|
return "application/rss+xml";
|
|
}
|
|
|
|
file = path.extname(file);
|
|
}
|
|
const dot = file.indexOf(".");
|
|
if (dot === -1) file = "." + file;
|
|
else if (dot > 0) file = file.slice(dot);
|
|
return db.get(file) ?? "application/octet-stream";
|
|
}
|
|
|
|
import * as fs from "./fs.ts";
|
|
import * as path from "node:path";
|