@mediabunny/mp3-encoder 1.58.1 → 1.59.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -326,6 +326,7 @@ var MediabunnyMp3Encoder = (() => {
326
326
  constructor() {
327
327
  super(...arguments);
328
328
  this.worker = null;
329
+ this.workerError = null;
329
330
  this.nextMessageId = 0;
330
331
  this.pendingMessages = /* @__PURE__ */ new Map();
331
332
  this.buffer = new Uint8Array(2 ** 16);
@@ -350,11 +351,24 @@ var MediabunnyMp3Encoder = (() => {
350
351
  pending.reject(data.error);
351
352
  }
352
353
  };
354
+ const onError = (error) => {
355
+ this.workerError = error;
356
+ for (const pending of this.pendingMessages.values()) {
357
+ pending.reject(error);
358
+ }
359
+ this.pendingMessages.clear();
360
+ this.worker?.terminate();
361
+ this.worker = null;
362
+ };
353
363
  if (this.worker.addEventListener) {
354
364
  this.worker.addEventListener("message", (event) => onMessage(event.data));
365
+ this.worker.addEventListener("error", (event) => {
366
+ onError(new Error(event.message || "MP3 encoder worker failed to load or crashed."));
367
+ });
355
368
  } else {
356
369
  const nodeWorker = this.worker;
357
370
  nodeWorker.on("message", onMessage);
371
+ nodeWorker.on("error", onError);
358
372
  }
359
373
  assert(this.config.bitrate);
360
374
  await this.sendCommand({
@@ -453,6 +467,10 @@ var MediabunnyMp3Encoder = (() => {
453
467
  }
454
468
  sendCommand(command, transferables) {
455
469
  return new Promise((resolve, reject) => {
470
+ if (this.workerError) {
471
+ reject(this.workerError);
472
+ return;
473
+ }
456
474
  const id = this.nextMessageId++;
457
475
  this.pendingMessages.set(id, {
458
476
  resolve,