diff --git a/lib/media/wasm/wasmLoader.ts b/lib/media/wasm/wasmLoader.ts index 95d7c84..ee02f6d 100644 --- a/lib/media/wasm/wasmLoader.ts +++ b/lib/media/wasm/wasmLoader.ts @@ -1,22 +1,10 @@ -import type { FFmpeg as FFmpegType } from '@ffmpeg/ffmpeg'; -import { initializeImageMagick } from '@imagemagick/magick-wasm'; +// Suppress Turbopack bundler warning for FFmpeg's dynamic imports +// The @ffmpeg/ffmpeg package internally uses dynamic imports that Turbopack +// flags as "too dynamic" but still work at runtime +declare const globalThis: any; + import type { ConverterEngine, WASMModuleState } from '@/types/media'; - -// Dynamically require FFmpeg to avoid bundler issues -let FFmpeg: any = null; - -// Initialize FFmpeg at module load time -async function initFFmpeg() { - if (!FFmpeg) { - try { - const module = await import('@ffmpeg/ffmpeg'); - FFmpeg = module.FFmpeg; - } catch (error) { - console.error('[FFmpeg] Failed to import module:', error); - } - } - return FFmpeg; -} +import { initializeImageMagick } from '@imagemagick/magick-wasm'; /** * WASM module loading state @@ -29,26 +17,28 @@ const moduleState: WASMModuleState = { /** * Cached WASM instances */ -let ffmpegInstance: FFmpegType | null = null; +let ffmpegInstance: any = null; let imagemagickInstance: any = null; /** * Load FFmpeg WASM module */ -export async function loadFFmpeg(): Promise { +export async function loadFFmpeg(): Promise { if (ffmpegInstance && moduleState.ffmpeg) { return ffmpegInstance; } try { - // Initialize FFmpeg class if not already done - const FFmpegClass = await initFFmpeg(); + // Import FFmpeg at runtime to avoid static bundler analysis + // The @ffmpeg/ffmpeg package has internal dynamic imports that + // Turbopack cannot statically analyze, but they work fine at runtime + const { FFmpeg } = await import('@ffmpeg/ffmpeg'); - if (!FFmpegClass) { + if (!FFmpeg) { throw new Error('FFmpeg class not available'); } - ffmpegInstance = new FFmpegClass(); + ffmpegInstance = new FFmpeg(); if (!ffmpegInstance) { throw new Error('Failed to create FFmpeg instance');