@blockcast/mmt-container 2.2.0-main.efb4fa4521af → 2.2.0-main.fb5c7dfbe2de

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 (82) hide show
  1. package/README.md +29 -17
  2. package/dist/browser-runtime.js +1336 -302
  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 +26 -16
  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 +70 -12
  16. package/dist/fec-manager.d.ts.map +1 -1
  17. package/dist/fec-manager.js +403 -58
  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 +4 -4
  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/iso-block-locator.d.ts +48 -13
  27. package/dist/iso-block-locator.d.ts.map +1 -1
  28. package/dist/iso-block-locator.js +97 -25
  29. package/dist/iso-block-locator.js.map +2 -2
  30. package/dist/iso-bmff-timing.d.ts +10 -1
  31. package/dist/iso-bmff-timing.d.ts.map +1 -1
  32. package/dist/iso-bmff-timing.js +36 -2
  33. package/dist/iso-bmff-timing.js.map +2 -2
  34. package/dist/media-router.js.map +1 -1
  35. package/dist/mmtp-container-parser.d.ts +79 -10
  36. package/dist/mmtp-container-parser.d.ts.map +1 -1
  37. package/dist/mmtp-container-parser.js +207 -26
  38. package/dist/mmtp-container-parser.js.map +2 -2
  39. package/dist/mmtp-container-parser.no-modules.js +209 -29
  40. package/dist/mmtp-container-parser.no-modules.js.map +2 -2
  41. package/dist/mmtp-decode-pipeline.js +206 -26
  42. package/dist/mmtp-decode-pipeline.js.map +2 -2
  43. package/dist/mmtp-router.d.ts +34 -8
  44. package/dist/mmtp-router.d.ts.map +1 -1
  45. package/dist/mmtp-router.js +555 -79
  46. package/dist/mmtp-router.js.map +2 -2
  47. package/dist/multicast-manager.d.ts +13 -3
  48. package/dist/multicast-manager.d.ts.map +1 -1
  49. package/dist/multicast-manager.js +980 -146
  50. package/dist/multicast-manager.js.map +2 -2
  51. package/dist/multicast-transport.js +28 -18
  52. package/dist/multicast-transport.js.map +2 -2
  53. package/dist/no-modules.js +206 -26
  54. package/dist/no-modules.js.map +2 -2
  55. package/dist/repair-fetch.d.ts +36 -8
  56. package/dist/repair-fetch.d.ts.map +1 -1
  57. package/dist/repair-fetch.js +285 -26
  58. package/dist/repair-fetch.js.map +3 -3
  59. package/dist/repair-layer-subscriptions.d.ts +6 -2
  60. package/dist/repair-layer-subscriptions.d.ts.map +1 -1
  61. package/dist/repair-layer-subscriptions.js +6 -3
  62. package/dist/repair-layer-subscriptions.js.map +2 -2
  63. package/dist/track-session.d.ts +1 -1
  64. package/dist/track-session.d.ts.map +1 -1
  65. package/dist/track-session.js +1 -0
  66. package/dist/track-session.js.map +2 -2
  67. package/dist/wasm-mmtp-container-parser.js +206 -26
  68. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  69. package/package.json +8 -5
  70. package/src/catalog-fec-params.ts +36 -1
  71. package/src/cmcd-producer.ts +189 -179
  72. package/src/fec-manager.ts +433 -32
  73. package/src/fec-worker-setup.ts +2 -2
  74. package/src/index.ts +9 -2
  75. package/src/iso-block-locator.ts +133 -31
  76. package/src/iso-bmff-timing.ts +40 -1
  77. package/src/mmtp-container-parser.ts +306 -29
  78. package/src/mmtp-router.ts +548 -38
  79. package/src/multicast-manager.ts +44 -6
  80. package/src/repair-fetch.ts +363 -49
  81. package/src/repair-layer-subscriptions.ts +13 -5
  82. package/src/track-session.ts +4 -1
@@ -1268,14 +1268,15 @@ var MOQT_PUBLISHER_PRIORITY = Object.freeze({
1268
1268
  });
1269
1269
 
1270
1270
  // node_modules/@blockcast/mmt-transport/dist/amt-gateway.js
1271
+ var MAX_PENDING_PACKETS = 256;
1271
1272
  var AMTGatewayManager = class {
1272
1273
  subscriptions = /* @__PURE__ */ new Map();
1273
1274
  messageHandler;
1275
+ messageListenerRegistered = false;
1274
1276
  pendingPackets = /* @__PURE__ */ new Map();
1275
1277
  constructor() {
1276
1278
  this.messageHandler = (event) => {
1277
1279
  const data = event.data;
1278
- console.log(`[AMT] SW message received:`, data.type);
1279
1280
  if (data.type === "UDP_PACKET") {
1280
1281
  this.handlePacket(data);
1281
1282
  } else if (data.type === "SOCKET_ERROR") {
@@ -1284,12 +1285,22 @@ var AMTGatewayManager = class {
1284
1285
  console.log(`[AMT SW Debug] ${data.message}`);
1285
1286
  }
1286
1287
  };
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");
1288
+ }
1289
+ ensureMessageListener() {
1290
+ if (this.messageListenerRegistered || typeof navigator === "undefined" || !navigator.serviceWorker || !this.messageHandler) {
1291
+ return;
1292
+ }
1293
+ navigator.serviceWorker.addEventListener("message", this.messageHandler);
1294
+ this.messageListenerRegistered = true;
1295
+ console.log("[AMT] Registered service worker message handler");
1296
+ }
1297
+ removeMessageListener() {
1298
+ if (!this.messageListenerRegistered)
1299
+ return;
1300
+ if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1301
+ navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1292
1302
  }
1303
+ this.messageListenerRegistered = false;
1293
1304
  }
1294
1305
  /**
1295
1306
  * Subscribe via AMT tunnel
@@ -1299,6 +1310,7 @@ var AMTGatewayManager = class {
1299
1310
  if (config.protected) {
1300
1311
  throw new Error("AMTGatewayManager refuses a protected join: it reports no per-datagram sender (multicast-02 7.2.7)");
1301
1312
  }
1313
+ this.ensureMessageListener();
1302
1314
  const keyStr = this.getKeyString(key);
1303
1315
  if (this.subscriptions.has(keyStr)) {
1304
1316
  console.log(`[AMT] Reusing existing subscription to ${keyStr}`);
@@ -1334,6 +1346,8 @@ var AMTGatewayManager = class {
1334
1346
  this.subscriptions.delete(keyStr);
1335
1347
  this.pendingPackets.delete(subscription.subscriptionId);
1336
1348
  }
1349
+ if (this.subscriptions.size === 0)
1350
+ this.removeMessageListener();
1337
1351
  throw new Error(`Failed to subscribe via AMT: ${error instanceof Error ? error.message : String(error)}`);
1338
1352
  }
1339
1353
  }
@@ -1355,6 +1369,8 @@ var AMTGatewayManager = class {
1355
1369
  } finally {
1356
1370
  this.subscriptions.delete(handle);
1357
1371
  this.pendingPackets.delete(subscription.subscriptionId);
1372
+ if (this.subscriptions.size === 0)
1373
+ this.removeMessageListener();
1358
1374
  }
1359
1375
  }
1360
1376
  /**
@@ -1371,14 +1387,12 @@ var AMTGatewayManager = class {
1371
1387
  if (!subscriptionId)
1372
1388
  return;
1373
1389
  const subscription = this.subscriptions.get(subscriptionId);
1374
- if (!subscription) {
1375
- console.warn(`[AMT] Received packet for unknown subscription: ${subscriptionId}`);
1390
+ if (!subscription)
1376
1391
  return;
1377
- }
1378
1392
  if (!subscription.handshakeComplete) {
1379
1393
  const queue = this.pendingPackets.get(subscriptionId);
1380
1394
  const packetData2 = data;
1381
- if (queue) {
1395
+ if (queue && queue.length < MAX_PENDING_PACKETS) {
1382
1396
  queue.push({
1383
1397
  data: packetData2.data,
1384
1398
  remoteAddress: packetData2.remoteAddress,
@@ -1404,19 +1418,15 @@ var AMTGatewayManager = class {
1404
1418
  if (!subscriptionId)
1405
1419
  return;
1406
1420
  const subscription = this.subscriptions.get(subscriptionId);
1407
- if (!subscription) {
1408
- console.warn(`[AMT] Received error for unknown subscription: ${subscriptionId}`);
1421
+ if (!subscription)
1409
1422
  return;
1410
- }
1411
1423
  subscription.config.onError(new Error(error || "Unknown error"));
1412
1424
  }
1413
1425
  /**
1414
1426
  * Cleanup on destroy
1415
1427
  */
1416
1428
  destroy() {
1417
- if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1418
- navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1419
- }
1429
+ this.removeMessageListener();
1420
1430
  const handles = Array.from(this.subscriptions.keys());
1421
1431
  for (const handle of handles) {
1422
1432
  this.unsubscribe(handle).catch((err) => {