@blockcast/mmt-container 2.2.0-main.c4fa878f4ff4 → 2.2.0-main.da2e7cd1dd5d

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.
Files changed (62) hide show
  1. package/README.md +29 -17
  2. package/dist/browser-runtime.js +241 -149
  3. package/dist/browser-runtime.js.map +3 -3
  4. package/dist/catalog-fec-params.d.ts +17 -1
  5. package/dist/catalog-fec-params.d.ts.map +1 -1
  6. package/dist/catalog-fec-params.js +15 -0
  7. package/dist/catalog-fec-params.js.map +2 -2
  8. package/dist/cmcd-producer.d.ts +60 -47
  9. package/dist/cmcd-producer.d.ts.map +1 -1
  10. package/dist/cmcd-producer.js +138 -109
  11. package/dist/cmcd-producer.js.map +2 -2
  12. package/dist/delivery-catalog.js +24 -15
  13. package/dist/delivery-catalog.js.map +2 -2
  14. package/dist/delta-fallback-config.js.map +1 -1
  15. package/dist/fec-manager.d.ts +3 -1
  16. package/dist/fec-manager.d.ts.map +1 -1
  17. package/dist/fec-manager.js +26 -4
  18. package/dist/fec-manager.js.map +2 -2
  19. package/dist/fec-worker-setup.d.ts +1 -1
  20. package/dist/fec-worker-setup.js +1 -1
  21. package/dist/fec-worker-setup.js.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +5 -1
  25. package/dist/index.js.map +2 -2
  26. package/dist/media-router.js.map +1 -1
  27. package/dist/mmtp-container-parser.d.ts +2 -0
  28. package/dist/mmtp-container-parser.d.ts.map +1 -1
  29. package/dist/mmtp-container-parser.js +4 -0
  30. package/dist/mmtp-container-parser.js.map +2 -2
  31. package/dist/mmtp-container-parser.no-modules.js +4 -0
  32. package/dist/mmtp-container-parser.no-modules.js.map +2 -2
  33. package/dist/mmtp-decode-pipeline.js +4 -0
  34. package/dist/mmtp-decode-pipeline.js.map +2 -2
  35. package/dist/mmtp-router.d.ts.map +1 -1
  36. package/dist/mmtp-router.js +38 -15
  37. package/dist/mmtp-router.js.map +2 -2
  38. package/dist/multicast-manager.js +64 -19
  39. package/dist/multicast-manager.js.map +2 -2
  40. package/dist/multicast-transport.js +24 -15
  41. package/dist/multicast-transport.js.map +2 -2
  42. package/dist/no-modules.js +4 -0
  43. package/dist/no-modules.js.map +2 -2
  44. package/dist/repair-layer-subscriptions.d.ts +6 -2
  45. package/dist/repair-layer-subscriptions.d.ts.map +1 -1
  46. package/dist/repair-layer-subscriptions.js +6 -3
  47. package/dist/repair-layer-subscriptions.js.map +2 -2
  48. package/dist/track-session.d.ts +1 -1
  49. package/dist/track-session.js.map +1 -1
  50. package/dist/wasm-mmtp-container-parser.js +4 -0
  51. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  52. package/package.json +8 -5
  53. package/schemas/catalog.schema.json +4 -0
  54. package/src/catalog-fec-params.ts +36 -1
  55. package/src/cmcd-producer.ts +189 -179
  56. package/src/fec-manager.ts +26 -4
  57. package/src/fec-worker-setup.ts +2 -2
  58. package/src/index.ts +6 -2
  59. package/src/mmtp-container-parser.ts +12 -0
  60. package/src/mmtp-router.ts +21 -0
  61. package/src/repair-layer-subscriptions.ts +13 -5
  62. package/src/track-session.ts +1 -1
@@ -1271,11 +1271,11 @@ var MOQT_PUBLISHER_PRIORITY = Object.freeze({
1271
1271
  var AMTGatewayManager = class {
1272
1272
  subscriptions = /* @__PURE__ */ new Map();
1273
1273
  messageHandler;
1274
+ messageListenerRegistered = false;
1274
1275
  pendingPackets = /* @__PURE__ */ new Map();
1275
1276
  constructor() {
1276
1277
  this.messageHandler = (event) => {
1277
1278
  const data = event.data;
1278
- console.log(`[AMT] SW message received:`, data.type);
1279
1279
  if (data.type === "UDP_PACKET") {
1280
1280
  this.handlePacket(data);
1281
1281
  } else if (data.type === "SOCKET_ERROR") {
@@ -1284,12 +1284,22 @@ var AMTGatewayManager = class {
1284
1284
  console.log(`[AMT SW Debug] ${data.message}`);
1285
1285
  }
1286
1286
  };
1287
- if (typeof navigator !== "undefined" && navigator.serviceWorker) {
1288
- navigator.serviceWorker.addEventListener("message", this.messageHandler);
1289
- console.log("[AMT] Registered service worker message handler");
1290
- } else {
1291
- console.warn("[AMT] Service worker not available");
1287
+ }
1288
+ ensureMessageListener() {
1289
+ if (this.messageListenerRegistered || typeof navigator === "undefined" || !navigator.serviceWorker || !this.messageHandler) {
1290
+ return;
1291
+ }
1292
+ navigator.serviceWorker.addEventListener("message", this.messageHandler);
1293
+ this.messageListenerRegistered = true;
1294
+ console.log("[AMT] Registered service worker message handler");
1295
+ }
1296
+ removeMessageListener() {
1297
+ if (!this.messageListenerRegistered)
1298
+ return;
1299
+ if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1300
+ navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1292
1301
  }
1302
+ this.messageListenerRegistered = false;
1293
1303
  }
1294
1304
  /**
1295
1305
  * Subscribe via AMT tunnel
@@ -1299,6 +1309,7 @@ var AMTGatewayManager = class {
1299
1309
  if (config.protected) {
1300
1310
  throw new Error("AMTGatewayManager refuses a protected join: it reports no per-datagram sender (multicast-02 7.2.7)");
1301
1311
  }
1312
+ this.ensureMessageListener();
1302
1313
  const keyStr = this.getKeyString(key);
1303
1314
  if (this.subscriptions.has(keyStr)) {
1304
1315
  console.log(`[AMT] Reusing existing subscription to ${keyStr}`);
@@ -1334,6 +1345,8 @@ var AMTGatewayManager = class {
1334
1345
  this.subscriptions.delete(keyStr);
1335
1346
  this.pendingPackets.delete(subscription.subscriptionId);
1336
1347
  }
1348
+ if (this.subscriptions.size === 0)
1349
+ this.removeMessageListener();
1337
1350
  throw new Error(`Failed to subscribe via AMT: ${error instanceof Error ? error.message : String(error)}`);
1338
1351
  }
1339
1352
  }
@@ -1355,6 +1368,8 @@ var AMTGatewayManager = class {
1355
1368
  } finally {
1356
1369
  this.subscriptions.delete(handle);
1357
1370
  this.pendingPackets.delete(subscription.subscriptionId);
1371
+ if (this.subscriptions.size === 0)
1372
+ this.removeMessageListener();
1358
1373
  }
1359
1374
  }
1360
1375
  /**
@@ -1371,10 +1386,8 @@ var AMTGatewayManager = class {
1371
1386
  if (!subscriptionId)
1372
1387
  return;
1373
1388
  const subscription = this.subscriptions.get(subscriptionId);
1374
- if (!subscription) {
1375
- console.warn(`[AMT] Received packet for unknown subscription: ${subscriptionId}`);
1389
+ if (!subscription)
1376
1390
  return;
1377
- }
1378
1391
  if (!subscription.handshakeComplete) {
1379
1392
  const queue = this.pendingPackets.get(subscriptionId);
1380
1393
  const packetData2 = data;
@@ -1404,19 +1417,15 @@ var AMTGatewayManager = class {
1404
1417
  if (!subscriptionId)
1405
1418
  return;
1406
1419
  const subscription = this.subscriptions.get(subscriptionId);
1407
- if (!subscription) {
1408
- console.warn(`[AMT] Received error for unknown subscription: ${subscriptionId}`);
1420
+ if (!subscription)
1409
1421
  return;
1410
- }
1411
1422
  subscription.config.onError(new Error(error || "Unknown error"));
1412
1423
  }
1413
1424
  /**
1414
1425
  * Cleanup on destroy
1415
1426
  */
1416
1427
  destroy() {
1417
- if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1418
- navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1419
- }
1428
+ this.removeMessageListener();
1420
1429
  const handles = Array.from(this.subscriptions.keys());
1421
1430
  for (const handle of handles) {
1422
1431
  this.unsubscribe(handle).catch((err) => {