@blockcast/mmt-transport 0.2.2-main.30d2c7ed30b2 → 0.2.2-main.342ee38b60e1

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.
@@ -1,3 +1,4 @@
1
+ import type { WindowMulticastSubscribeConfig } from "./types.js";
1
2
  export type MulticastTransportPreference = "auto" | "native" | "tunnel";
2
3
  export interface MulticastEndpointConfig {
3
4
  groupAddress: string;
@@ -7,6 +8,35 @@ export interface MulticastEndpointConfig {
7
8
  amtRelay?: string;
8
9
  amtRelayPort?: number;
9
10
  }
11
+ /**
12
+ * Input accepted by the canonical window.multicast request converter.
13
+ *
14
+ * `mode` and the `amtRelay*` fields are internal endpoint-selection state;
15
+ * they are deliberately not emitted on the page-facing request. The
16
+ * resulting `origin` is the only acquisition selector understood by the
17
+ * gateway.
18
+ */
19
+ export interface WindowMulticastEndpointInput {
20
+ group: string;
21
+ port: number;
22
+ source?: string;
23
+ mode?: MulticastTransportPreference;
24
+ amtRelay?: string;
25
+ amtRelayPort?: number;
26
+ packetIds?: readonly number[];
27
+ tracks?: ReadonlyArray<{
28
+ name: string;
29
+ packetId: number;
30
+ }>;
31
+ }
32
+ /**
33
+ * Convert internal endpoint-selection state to the canonical page contract.
34
+ *
35
+ * Native is the default and an explicit `native` selection always wins over
36
+ * stale relay metadata. Tunnel/AMT requests must carry the resolved relay
37
+ * and port; there is no implicit relay-port default at this boundary.
38
+ */
39
+ export declare function toWindowMulticastSubscribeConfig(input: WindowMulticastEndpointInput): WindowMulticastSubscribeConfig;
10
40
  export declare function isValidMulticastGroupAddress(address: string | undefined): boolean;
11
41
  export declare function normalizeMulticastEndpoint(endpoint: MulticastEndpointConfig): MulticastEndpointConfig | undefined;
12
42
  /** Stable ownership key for one IWA multicast/AMT subscription. */
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-config.d.ts","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAajF;AAED,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,uBAAuB,GAC/B,uBAAuB,GAAG,SAAS,CAgBrC;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAW9E;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAC7D,OAAO,CAGT;AAED,wBAAgB,sBAAsB,CACrC,MAAM,GAAE,MAAM,GAAG,eAAwE,GACvF,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAgB,6BAA6B,CAC5C,MAAM,GAAE,MAAM,GAAG,eAAwE,GACvF,OAAO,CAKT"}
1
+ {"version":3,"file":"endpoint-config.d.ts","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,8BAA8B,EAE9B,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA4B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,4BAA4B,GACjC,8BAA8B,CAmChC;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAajF;AAED,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,uBAAuB,GAC/B,uBAAuB,GAAG,SAAS,CAgBrC;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAW9E;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAC7D,OAAO,CAGT;AAED,wBAAgB,sBAAsB,CACrC,MAAM,GAAE,MAAM,GAAG,eAAwE,GACvF,uBAAuB,GAAG,SAAS,CAmBrC;AAED,wBAAgB,6BAA6B,CAC5C,MAAM,GAAE,MAAM,GAAG,eAAwE,GACvF,OAAO,CAKT"}
@@ -1,3 +1,43 @@
1
+ /**
2
+ * Convert internal endpoint-selection state to the canonical page contract.
3
+ *
4
+ * Native is the default and an explicit `native` selection always wins over
5
+ * stale relay metadata. Tunnel/AMT requests must carry the resolved relay
6
+ * and port; there is no implicit relay-port default at this boundary.
7
+ */
8
+ export function toWindowMulticastSubscribeConfig(input) {
9
+ if (input.mode !== undefined && !["auto", "native", "tunnel"].includes(input.mode)) {
10
+ throw new TypeError(`Unsupported multicast mode: ${String(input.mode)}`);
11
+ }
12
+ const base = {
13
+ group: input.group,
14
+ port: input.port,
15
+ ...(input.source?.trim() ? { source: input.source.trim() } : {}),
16
+ consume: "bytes",
17
+ ...(input.packetIds?.length ? { packetIds: [...input.packetIds] } : {}),
18
+ };
19
+ const relay = input.amtRelay?.trim();
20
+ const wantsAmt = input.mode === "tunnel" ||
21
+ (input.mode !== "native" && relay !== undefined && relay !== "");
22
+ if (!wantsAmt) {
23
+ const native = {
24
+ ...base,
25
+ origin: "ip-multicast",
26
+ ...(input.tracks?.length ? { tracks: input.tracks.map(({ name, packetId }) => ({ name, packetId })) } : {}),
27
+ };
28
+ return native;
29
+ }
30
+ const relayPort = input.amtRelayPort;
31
+ if (!relay || relayPort === undefined || !isPositivePort(relayPort)) {
32
+ throw new TypeError("AMT requires a resolved relay and a valid relay port");
33
+ }
34
+ return {
35
+ ...base,
36
+ origin: "amt",
37
+ relay,
38
+ relayPort,
39
+ };
40
+ }
1
41
  export function isValidMulticastGroupAddress(address) {
2
42
  const value = address?.trim().toLowerCase();
3
43
  if (!value)
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-config.js","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint-config.js","sourceRoot":"","sources":["../src/endpoint-config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  * - Unified FEC/ABR pipeline across all transport modes
23
23
  * - A/V synchronization via SharedClock
24
24
  */
25
- export type { TransportConfig, TransportSubscription, QualityLevel, TransportCapabilities, TransportMode, TransportState, DRIADRelay, AmtRelayInfo, GroupKey, PacketMetadata, Micro, SyncDecision, WindowMulticastSubscribeConfig, WindowMulticastSubscriptionState, WindowMulticastResolvedTransport, WindowMulticastSubscriptionEventMap, WindowMulticastSubscription, WindowMulticastCapabilities, WindowMulticastGateway, MulticastTransportMode, MulticastConfig, PacketSource, SubscriptionState, SubscriptionStats, MulticastSubscriptionHandle, MulticastBridge, MoqFecConfig, RepairObjectHeader, } from "./types.js";
25
+ export type { TransportConfig, TransportSubscription, QualityLevel, TransportCapabilities, TransportMode, TransportState, DRIADRelay, AmtRelayInfo, GroupKey, PacketMetadata, Micro, SyncDecision, WindowMulticastSubscribeConfig, WindowMulticastSubscribeConfigBytes, WindowMulticastSubscribeConfigAmt, WindowMulticastSubscriptionState, WindowMulticastSubscriptionEventMap, WindowMulticastSubscription, WindowMulticastCapabilities, WindowMulticastGateway, MulticastTransportMode, MulticastConfig, PacketSource, SubscriptionState, SubscriptionStats, MulticastSubscriptionHandle, MulticastBridge, MoqFecConfig, RepairObjectHeader, } from "./types.js";
26
26
  export { FEC_CONFIG_MESSAGE_TYPE, REPAIR_TRACK_SUFFIX, repairTrackPath, isRepairTrack, sourceTrackFromRepair, MoqFecAlgorithm, } from "./types.js";
27
27
  export { TransportManager, transportManager } from "./transport-manager.js";
28
28
  export { DRIADDiscovery, driadDiscovery } from "./driad-discovery.js";
@@ -31,7 +31,7 @@ export { endpointKey, selectMulticastTier, type MulticastTierEndpoint, } from ".
31
31
  export { MulticastOrchestrator, DEFAULT_DWELL_MS, DEFAULT_JOIN_DEADLINE_MS, goodputFromStats, type GoodputSample, type HeadroomSample, type MulticastTierPacket, type OrchestratorCommand, type OrchestratorOptions, type OrchestratorState, } from "./multicast-orchestrator.js";
32
32
  export { createMulticastSignalingReconciler, normalizeCatalogEndpoints, type MulticastSignalingEndpoint, } from "./multicast-signaling-reconciler.js";
33
33
  export { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectEndpointPacketIdsForTracks, selectMulticastCandidate, selectMulticastCandidateForTracks, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints, type PlayerMulticastConfig, type MulticastTrackSelection, } from "./multicast-catalog-policy.js";
34
- export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, type MulticastEndpointConfig, type MulticastTransportPreference, } from "./endpoint-config.js";
34
+ export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, toWindowMulticastSubscribeConfig, type MulticastEndpointConfig, type MulticastTransportPreference, type WindowMulticastEndpointInput, } from "./endpoint-config.js";
35
35
  export { MulticastSubscriptionPool, multicastSubscriptionPool, type MulticastSubscriptionConsumer, type MulticastSubscriptionLease, } from "./multicast-subscription-pool.js";
36
36
  export { classifyStall, TransportStallDetector, type FecProgressSnapshot, type PlayerStallClassification, type PlayerStallSnapshot, type StallDetectorConfig, } from "./stall-detector.js";
37
37
  export { makeSourceSwitchHandler, wireStallDetector, wireStarvationDetector, type ActivatableSessions, type FecStarvationSnapshot, type LossArcSession, type StallDetectorLike, type StarvationDetectorLike, } from "./takeover.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,YAAY,EACX,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,KAAK,EACL,YAAY,EACZ,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,mCAAmC,EACnC,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EAEtB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EAEf,YAAY,EACZ,kBAAkB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EACN,yBAAyB,EACzB,cAAc,EACd,KAAK,cAAc,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,EACnB,KAAK,qBAAqB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,EACzB,KAAK,0BAA0B,GAC/B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,GAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,aAAa,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ export { endpointKey, selectMulticastTier, } from "./multicast-tier.js";
33
33
  export { MulticastOrchestrator, DEFAULT_DWELL_MS, DEFAULT_JOIN_DEADLINE_MS, goodputFromStats, } from "./multicast-orchestrator.js";
34
34
  export { createMulticastSignalingReconciler, normalizeCatalogEndpoints, } from "./multicast-signaling-reconciler.js";
35
35
  export { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectEndpointPacketIdsForTracks, selectMulticastCandidate, selectMulticastCandidateForTracks, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints, } from "./multicast-catalog-policy.js";
36
- export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, } from "./endpoint-config.js";
36
+ export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, toWindowMulticastSubscribeConfig, } from "./endpoint-config.js";
37
37
  export { MulticastSubscriptionPool, multicastSubscriptionPool, } from "./multicast-subscription-pool.js";
38
38
  export { classifyStall, TransportStallDetector, } from "./stall-detector.js";
39
39
  export { makeSourceSwitchHandler, wireStallDetector, wireStarvationDetector, } from "./takeover.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAoCH,2DAA2D;AAC3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,8BAA8B;AAC9B,OAAO,EACN,yBAAyB,EACzB,cAAc,GAEd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GAOhB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,GAEzB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,GAGtB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,aAAa,EACb,sBAAsB,GAKtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,GAUlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EAErB,sBAAsB,GAEtB,MAAM,oBAAoB,CAAC;AAE5B,cAAc;AACd,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAGjB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAqCH,2DAA2D;AAC3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,8BAA8B;AAC9B,OAAO,EACN,yBAAyB,EACzB,cAAc,GAEd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GAOhB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,GAEzB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,GAGtB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,gCAAgC,GAIhC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,aAAa,EACb,sBAAsB,GAKtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,GAUlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EAErB,sBAAsB,GAEtB,MAAM,oBAAoB,CAAC;AAE5B,cAAc;AACd,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAGjB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}
@@ -163,6 +163,38 @@
163
163
  };
164
164
 
165
165
  // src/endpoint-config.ts
166
+ function toWindowMulticastSubscribeConfig(input) {
167
+ if (input.mode !== void 0 && !["auto", "native", "tunnel"].includes(input.mode)) {
168
+ throw new TypeError(`Unsupported multicast mode: ${String(input.mode)}`);
169
+ }
170
+ const base = {
171
+ group: input.group,
172
+ port: input.port,
173
+ ...input.source?.trim() ? { source: input.source.trim() } : {},
174
+ consume: "bytes",
175
+ ...input.packetIds?.length ? { packetIds: [...input.packetIds] } : {}
176
+ };
177
+ const relay = input.amtRelay?.trim();
178
+ const wantsAmt = input.mode === "tunnel" || input.mode !== "native" && relay !== void 0 && relay !== "";
179
+ if (!wantsAmt) {
180
+ const native = {
181
+ ...base,
182
+ origin: "ip-multicast",
183
+ ...input.tracks?.length ? { tracks: input.tracks.map(({ name, packetId }) => ({ name, packetId })) } : {}
184
+ };
185
+ return native;
186
+ }
187
+ const relayPort = input.amtRelayPort;
188
+ if (!relay || relayPort === void 0 || !isPositivePort(relayPort)) {
189
+ throw new TypeError("AMT requires a resolved relay and a valid relay port");
190
+ }
191
+ return {
192
+ ...base,
193
+ origin: "amt",
194
+ relay,
195
+ relayPort
196
+ };
197
+ }
166
198
  function isValidMulticastGroupAddress(address) {
167
199
  const value = address?.trim().toLowerCase();
168
200
  if (!value) return false;
@@ -617,9 +649,7 @@
617
649
  (track) => track !== void 0
618
650
  );
619
651
  if (selected.length === 0) return normalizePacketIds(tracks.map((track) => track.packetId));
620
- const selectedRepairNames = new Set(
621
- selected.map((track) => catalogRepairTrack(catalog, track.name)).filter((name) => typeof name === "string" && name.length > 0)
622
- );
652
+ const selectedRepairNames = new Set(selected.flatMap((track) => catalogRepairTracks(catalog, track.name)));
623
653
  const selectedRepairTracks = tracks.filter((track) => selectedRepairNames.has(track.name));
624
654
  return normalizePacketIds([...selected, ...selectedRepairTracks].map((track) => track.packetId));
625
655
  }
@@ -730,13 +760,29 @@
730
760
  }
731
761
  return renditions;
732
762
  }
733
- function catalogRepairTrack(catalog, name) {
734
- const track = Array.isArray(catalog?.tracks) ? catalog.tracks.find((candidate) => candidate?.name === name) : void 0;
735
- const trackRepair = track?.fec?.repairTrack;
736
- if (typeof trackRepair === "string" && trackRepair.length > 0) return trackRepair;
763
+ function catalogRepairTracks(catalog, name) {
764
+ const tracks = Array.isArray(catalog?.tracks) ? catalog.tracks : [];
765
+ const track = tracks.find((candidate) => candidate?.name === name);
737
766
  const rendition = catalog?.video?.renditions?.[name] ?? catalog?.audio?.renditions?.[name];
738
- const renditionRepair = rendition?.fec?.repairTrack;
739
- return typeof renditionRepair === "string" && renditionRepair.length > 0 ? renditionRepair : void 0;
767
+ const fec = track?.fec ?? rendition?.fec;
768
+ if (!fec || fec.algorithm === "none") return [];
769
+ const names = /* @__PURE__ */ new Set();
770
+ if (typeof fec.repairTrack === "string" && fec.repairTrack.length > 0) names.add(fec.repairTrack);
771
+ const dependsOn = (entry) => Array.isArray(entry?.depends) && entry.depends.length === 1 && entry.depends[0] === name;
772
+ const common = catalog?.commonTrackFields ?? {};
773
+ for (const candidate of tracks) {
774
+ const packaging = candidate?.packaging ?? common?.packaging;
775
+ if (packaging === "fec-repair" && typeof candidate?.name === "string" && candidate.name.length > 0 && dependsOn(candidate)) {
776
+ names.add(candidate.name);
777
+ }
778
+ }
779
+ const repairRenditions = catalog?.repair?.renditions;
780
+ if (repairRenditions && typeof repairRenditions === "object") {
781
+ for (const [repairName, entry] of Object.entries(repairRenditions)) {
782
+ if (repairName.length > 0 && dependsOn(entry)) names.add(repairName);
783
+ }
784
+ }
785
+ return [...names];
740
786
  }
741
787
  function videoRenditionRank(config, name) {
742
788
  if (typeof config?.bitrate === "number" && config.bitrate > 0) return config.bitrate;
@@ -826,19 +872,14 @@
826
872
  return this.#entries.size;
827
873
  }
828
874
  async #createEntry(gateway, endpoint, onClosed) {
829
- const subscription = await gateway.subscribe({
875
+ const subscription = await gateway.subscribe(toWindowMulticastSubscribeConfig({
830
876
  group: endpoint.groupAddress,
831
877
  ...endpoint.sourceAddress ? { source: endpoint.sourceAddress } : {},
832
878
  port: endpoint.port,
833
- consume: "bytes",
834
- // MMTP FEC symbols are individually load-bearing. Quinn's "latest"
835
- // policy may replace accepted frames while a shard is flow-controlled,
836
- // which can discard more source symbols than the repair budget covers.
837
- reliableBacklog: "ordered",
838
879
  ...endpoint.mode ? { mode: endpoint.mode } : {},
839
880
  ...endpoint.amtRelay ? { amtRelay: endpoint.amtRelay } : {},
840
881
  ...endpoint.amtRelayPort ? { amtRelayPort: endpoint.amtRelayPort } : {}
841
- });
882
+ }));
842
883
  const consumers = /* @__PURE__ */ new Map();
843
884
  let entry;
844
885
  const bytesListener = (event) => {
@@ -1642,6 +1683,7 @@
1642
1683
  normalizeMulticastEndpoint,
1643
1684
  readPlayerMulticastConfig,
1644
1685
  readUrlMulticastConfig,
1686
+ toWindowMulticastSubscribeConfig,
1645
1687
  requiresMulticastCapability,
1646
1688
  runUnicastFallback,
1647
1689
  sameMulticastConfig,