30 lines
756 B
TypeScript
30 lines
756 B
TypeScript
import { readdir } from "fs/promises";
|
|
import { join } from "path";
|
|
import { createHash } from "crypto";
|
|
|
|
const logosDir = import.meta.dev
|
|
? join(process.cwd(), "public/logos")
|
|
: join(process.cwd(), ".output/public/logos");
|
|
|
|
export const getLogoNames = cachedFunction(
|
|
async () => {
|
|
const files = await readdir(logosDir);
|
|
return files
|
|
.filter((f) => f.endsWith(".png"))
|
|
.map((f) => f.replace(/\.png$/, ""))
|
|
.sort();
|
|
},
|
|
{
|
|
maxAge: 60 * 60 * 24,
|
|
name: "logoNames",
|
|
getKey: async () => {
|
|
const files = await readdir(logosDir);
|
|
const key = files
|
|
.filter((f) => f.endsWith(".png"))
|
|
.sort()
|
|
.join(",");
|
|
return createHash("sha256").update(key).digest("hex");
|
|
},
|
|
},
|
|
);
|