diff --git a/package-lock.json b/package-lock.json index 167942a..72c64c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17569,7 +17569,7 @@ }, "packages/ffmpeg": { "name": "@ffmpeg/ffmpeg", - "version": "0.12.1", + "version": "0.12.2", "license": "MIT", "dependencies": { "@ffmpeg/types": "^0.12.0" diff --git a/packages/ffmpeg/package.json b/packages/ffmpeg/package.json index d77e682..d7644fc 100644 --- a/packages/ffmpeg/package.json +++ b/packages/ffmpeg/package.json @@ -1,6 +1,6 @@ { "name": "@ffmpeg/ffmpeg", - "version": "0.12.1", + "version": "0.12.2", "description": "FFmpeg WebAssembly version for browser", "main": "./dist/umd/ffmpeg.js", "types": "./dist/esm/index.d.ts", @@ -17,7 +17,8 @@ "clean": "rimraf dist", "build:esm": "tsc -p tsconfig.esm.json", "build:umd": "webpack", - "build": "npm run clean && npm run build:esm && npm run build:umd" + "build": "npm run clean && npm run build:esm && npm run build:umd", + "prepublishOnly": "npm run build" }, "files": [ "dist", diff --git a/packages/ffmpeg/src/const.ts b/packages/ffmpeg/src/const.ts index 8ec2781..119ad23 100644 --- a/packages/ffmpeg/src/const.ts +++ b/packages/ffmpeg/src/const.ts @@ -5,7 +5,7 @@ export const CORE_VERSION = "0.12.1"; export const CORE_URL = `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`; export enum FFMessageType { - LOAD = "load", + LOAD = "LOAD", EXEC = "EXEC", WRITE_FILE = "WRITE_FILE", READ_FILE = "READ_FILE", diff --git a/packages/ffmpeg/src/errors.ts b/packages/ffmpeg/src/errors.ts index 297e273..d7246c7 100644 --- a/packages/ffmpeg/src/errors.ts +++ b/packages/ffmpeg/src/errors.ts @@ -3,3 +3,6 @@ export const ERROR_NOT_LOADED = new Error( "ffmpeg is not loaded, call `await ffmpeg.load()` first" ); export const ERROR_TERMINATED = new Error("called FFmpeg.terminate()"); +export const ERROR_IMPORT_FAILURE = new Error( + "failed to import ffmpeg-core.js" +); diff --git a/packages/ffmpeg/src/types.ts b/packages/ffmpeg/src/types.ts index c613708..d95267b 100644 --- a/packages/ffmpeg/src/types.ts +++ b/packages/ffmpeg/src/types.ts @@ -22,13 +22,6 @@ export interface FFMessageLoadConfig { * @defaultValue `https://unpkg.com/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js`; */ workerURL?: string; - /** - * When `thread` is true, ffmpeg imports `ffmpeg-core.worker.js` and thus - * makes multi-threaded core work. - * - * @defaultValue `false` - */ - thread?: boolean; } export interface FFMessageExecData { diff --git a/packages/ffmpeg/src/worker.ts b/packages/ffmpeg/src/worker.ts index a8c8eb2..38529bc 100644 --- a/packages/ffmpeg/src/worker.ts +++ b/packages/ffmpeg/src/worker.ts @@ -22,7 +22,11 @@ import type { FileData, } from "./types"; import { CORE_URL, FFMessageType } from "./const.js"; -import { ERROR_UNKNOWN_MESSAGE_TYPE, ERROR_NOT_LOADED } from "./errors.js"; +import { + ERROR_UNKNOWN_MESSAGE_TYPE, + ERROR_NOT_LOADED, + ERROR_IMPORT_FAILURE, +} from "./errors.js"; declare global { interface WorkerGlobalScope { @@ -51,13 +55,17 @@ const load = async ({ try { // when web worker type is `classic`. importScripts(coreURL); - } catch (e: unknown) { + } catch { // when web worker type is `module`. - if (e instanceof TypeError && e.toString().includes("Module scripts")) { - (self as WorkerGlobalScope).createFFmpegCore = ( - (await import(coreURL)) as ImportedFFmpegCoreModuleFactory - ).default; - } else throw e; + (self as WorkerGlobalScope).createFFmpegCore = ( + (await import( + /* @vite-ignore */ coreURL + )) as ImportedFFmpegCoreModuleFactory + ).default; + + if (!(self as WorkerGlobalScope).createFFmpegCore) { + throw ERROR_IMPORT_FAILURE; + } } ffmpeg = await (self as WorkerGlobalScope).createFFmpegCore({ diff --git a/packages/util/package.json b/packages/util/package.json index 54f838d..217c8f2 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -17,7 +17,8 @@ "clean": "rimraf dist", "build:esm": "tsc -p tsconfig.esm.json", "build:umd": "tsc -p tsconfig.cjs.json && webpack", - "build": "npm run clean && npm run build:esm && npm run build:umd" + "build": "npm run clean && npm run build:esm && npm run build:umd", + "prepublishOnly": "npm run build" }, "files": [ "dist"