diff --git a/src/hooks/read-image-resizer/image-resizer.ts b/src/hooks/read-image-resizer/image-resizer.ts index 13e2923f2..3f564ef53 100644 --- a/src/hooks/read-image-resizer/image-resizer.ts +++ b/src/hooks/read-image-resizer/image-resizer.ts @@ -79,6 +79,10 @@ function getErrorMessage(error: unknown): string { return error instanceof Error ? error.message : String(error) } +function loadSharpModule(): Promise { + return Function('return import("sharp").catch(() => null)')() as Promise +} + export function calculateTargetDimensions( width: number, height: number, @@ -110,10 +114,12 @@ export async function resizeImage( base64DataUrl: string, mimeType: string, target: ImageDimensions, + deps: { + loadSharpModule?: () => Promise + } = {}, ): Promise { try { - const sharpModuleName = "sharp" - const sharpModule = await import(sharpModuleName).catch(() => null) + const sharpModule = await (deps.loadSharpModule?.() ?? loadSharpModule()) if (!sharpModule) { log("[read-image-resizer] sharp unavailable, attempting pure-JS fallback") return resizeImageFallback(base64DataUrl, mimeType, target)