fix(media): lazy load file-type sniffing

This commit is contained in:
Vincent Koc
2026-04-06 13:52:11 +01:00
parent 5edabf4776
commit d8226037c3

View File

@@ -1,7 +1,13 @@
import path from "node:path";
import { fileTypeFromBuffer } from "file-type";
import { type MediaKind, mediaKindFromMime } from "./constants.js";
let fileTypeModulePromise: Promise<typeof import("file-type")> | undefined;
function loadFileTypeModule(): Promise<typeof import("file-type")> {
fileTypeModulePromise ??= import("file-type");
return fileTypeModulePromise;
}
// Map common mimes to preferred file extensions.
const EXT_BY_MIME: Record<string, string> = {
"image/heic": ".heic",
@@ -76,6 +82,7 @@ async function sniffMime(buffer?: Buffer): Promise<string | undefined> {
return undefined;
}
try {
const { fileTypeFromBuffer } = await loadFileTypeModule();
const type = await fileTypeFromBuffer(buffer);
return type?.mime ?? undefined;
} catch {