@blockcast/mmt-transport 0.2.0 → 0.2.2

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 (98) hide show
  1. package/README.md +264 -0
  2. package/dist/.build-stamp +0 -0
  3. package/dist/abr-controller.d.ts +3 -0
  4. package/dist/abr-controller.d.ts.map +1 -1
  5. package/dist/abr-controller.js +5 -0
  6. package/dist/abr-controller.js.map +1 -1
  7. package/dist/amt-gateway.d.ts.map +1 -1
  8. package/dist/amt-gateway.js +2 -1
  9. package/dist/amt-gateway.js.map +1 -1
  10. package/dist/endpoint-config.d.ts +20 -0
  11. package/dist/endpoint-config.d.ts.map +1 -0
  12. package/dist/endpoint-config.js +103 -0
  13. package/dist/endpoint-config.js.map +1 -0
  14. package/dist/endpoint-config.test.d.ts +2 -0
  15. package/dist/endpoint-config.test.d.ts.map +1 -0
  16. package/dist/endpoint-config.test.js +39 -0
  17. package/dist/endpoint-config.test.js.map +1 -0
  18. package/dist/fec-client.d.ts +2 -2
  19. package/dist/fec-client.d.ts.map +1 -1
  20. package/dist/fec-client.js +10 -5
  21. package/dist/fec-client.js.map +1 -1
  22. package/dist/index.d.ts +8 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/mmt-transport.no-modules.js +1154 -0
  27. package/dist/mmt-transport.no-modules.js.map +7 -0
  28. package/dist/multicast-orchestrator.d.ts +56 -0
  29. package/dist/multicast-orchestrator.d.ts.map +1 -0
  30. package/dist/multicast-orchestrator.js +123 -0
  31. package/dist/multicast-orchestrator.js.map +1 -0
  32. package/dist/multicast-subscription-pool.d.ts +18 -0
  33. package/dist/multicast-subscription-pool.d.ts.map +1 -0
  34. package/dist/multicast-subscription-pool.js +130 -0
  35. package/dist/multicast-subscription-pool.js.map +1 -0
  36. package/dist/multicast-subscription-pool.test.d.ts +2 -0
  37. package/dist/multicast-subscription-pool.test.d.ts.map +1 -0
  38. package/dist/multicast-subscription-pool.test.js +108 -0
  39. package/dist/multicast-subscription-pool.test.js.map +1 -0
  40. package/dist/multicast-tier.d.ts +14 -0
  41. package/dist/multicast-tier.d.ts.map +1 -0
  42. package/dist/multicast-tier.js +22 -0
  43. package/dist/multicast-tier.js.map +1 -0
  44. package/dist/multicast-tier.test.d.ts +2 -0
  45. package/dist/multicast-tier.test.d.ts.map +1 -0
  46. package/dist/multicast-tier.test.js +75 -0
  47. package/dist/multicast-tier.test.js.map +1 -0
  48. package/dist/no-modules.d.ts +29 -0
  49. package/dist/no-modules.d.ts.map +1 -0
  50. package/dist/no-modules.js +35 -0
  51. package/dist/no-modules.js.map +1 -0
  52. package/dist/stall-detector.d.ts +22 -0
  53. package/dist/stall-detector.d.ts.map +1 -0
  54. package/dist/stall-detector.js +46 -0
  55. package/dist/stall-detector.js.map +1 -0
  56. package/dist/stall-detector.test.d.ts +2 -0
  57. package/dist/stall-detector.test.d.ts.map +1 -0
  58. package/dist/stall-detector.test.js +33 -0
  59. package/dist/stall-detector.test.js.map +1 -0
  60. package/dist/takeover.d.ts +49 -0
  61. package/dist/takeover.d.ts.map +1 -0
  62. package/dist/takeover.js +43 -0
  63. package/dist/takeover.js.map +1 -0
  64. package/dist/transport-manager.d.ts +28 -18
  65. package/dist/transport-manager.d.ts.map +1 -1
  66. package/dist/transport-manager.js +192 -138
  67. package/dist/transport-manager.js.map +1 -1
  68. package/dist/transport-manager.test.d.ts +2 -0
  69. package/dist/transport-manager.test.d.ts.map +1 -0
  70. package/dist/transport-manager.test.js +155 -0
  71. package/dist/transport-manager.test.js.map +1 -0
  72. package/dist/types.d.ts +36 -36
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/types.js.map +1 -1
  75. package/dist/unicast-fallback.d.ts +36 -0
  76. package/dist/unicast-fallback.d.ts.map +1 -0
  77. package/dist/unicast-fallback.js +53 -0
  78. package/dist/unicast-fallback.js.map +1 -0
  79. package/package.json +6 -6
  80. package/src/abr-controller.ts +9 -0
  81. package/src/amt-gateway.ts +2 -1
  82. package/src/endpoint-config.test.ts +54 -0
  83. package/src/endpoint-config.ts +121 -0
  84. package/src/fec-client.ts +11 -5
  85. package/src/index.ts +72 -2
  86. package/src/multicast-orchestrator.ts +150 -0
  87. package/src/multicast-subscription-pool.test.ts +115 -0
  88. package/src/multicast-subscription-pool.ts +164 -0
  89. package/src/multicast-tier.test.ts +80 -0
  90. package/src/multicast-tier.ts +32 -0
  91. package/src/no-modules.ts +44 -0
  92. package/src/stall-detector.test.ts +34 -0
  93. package/src/stall-detector.ts +63 -0
  94. package/src/takeover.ts +71 -0
  95. package/src/transport-manager.test.ts +192 -0
  96. package/src/transport-manager.ts +203 -153
  97. package/src/types.ts +50 -31
  98. package/src/unicast-fallback.ts +57 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transport-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-manager.test.d.ts","sourceRoot":"","sources":["../src/transport-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,155 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { TransportManager } from "./transport-manager.js";
3
+ const CONFIG = {
4
+ group: "232.1.1.50",
5
+ source: "192.168.1.181",
6
+ port: 8000,
7
+ streamType: "video",
8
+ driadEnabled: false,
9
+ };
10
+ describe("TransportManager window.multicast integration", () => {
11
+ let hadWindow = false;
12
+ let previousWindow;
13
+ beforeEach(() => {
14
+ hadWindow = Object.hasOwn(globalThis, "window");
15
+ previousWindow = globalThis
16
+ .window;
17
+ vi.spyOn(console, "log").mockImplementation(() => { });
18
+ vi.spyOn(console, "warn").mockImplementation(() => { });
19
+ vi.spyOn(console, "error").mockImplementation(() => { });
20
+ });
21
+ afterEach(() => {
22
+ if (hadWindow) {
23
+ globalThis.window =
24
+ previousWindow;
25
+ }
26
+ else {
27
+ delete globalThis.window;
28
+ }
29
+ vi.restoreAllMocks();
30
+ });
31
+ it("does not treat legacy window.Multicast as a usable transport", async () => {
32
+ const subscribeSSM = vi.fn();
33
+ globalThis.window = {
34
+ Multicast: { subscribeSSM },
35
+ };
36
+ const manager = new TransportManager();
37
+ const connected = await manager.connect(CONFIG);
38
+ expect(connected).toBe(false);
39
+ expect(subscribeSSM).not.toHaveBeenCalled();
40
+ });
41
+ it("subscribes through lowercase window.multicast and forwards bytes", async () => {
42
+ const listeners = new Map();
43
+ const subscription = {
44
+ id: "sub-1",
45
+ addEventListener: vi.fn((type, listener) => {
46
+ listeners.set(type, listener);
47
+ }),
48
+ removeEventListener: vi.fn(),
49
+ unsubscribe: vi.fn().mockResolvedValue(undefined),
50
+ };
51
+ const subscribe = vi.fn().mockResolvedValue(subscription);
52
+ globalThis.window = {
53
+ multicast: {
54
+ capabilities: { consumeModes: ["bytes"] },
55
+ subscribe,
56
+ },
57
+ };
58
+ const manager = new TransportManager();
59
+ const onPacket = vi.fn();
60
+ manager.setPacketCallback(onPacket);
61
+ const connected = await manager.connect(CONFIG);
62
+ expect(connected).toBe(true);
63
+ expect(subscribe).toHaveBeenCalledWith({
64
+ group: CONFIG.group,
65
+ source: CONFIG.source,
66
+ port: CONFIG.port,
67
+ consume: "bytes",
68
+ });
69
+ const payload = new Uint8Array([1, 2, 3]).buffer;
70
+ listeners.get("bytes")?.({ detail: payload });
71
+ expect(onPacket).toHaveBeenCalledWith(payload);
72
+ expect(manager.getState().packetsReceived).toBe(1);
73
+ expect(manager.getState().bytesReceived).toBe(3);
74
+ manager.disconnect();
75
+ });
76
+ it("releases the previous lease before reconnecting", async () => {
77
+ const unsubscribe = vi.fn();
78
+ const subscription = {
79
+ addEventListener: vi.fn(), removeEventListener: vi.fn(), unsubscribe,
80
+ };
81
+ const subscribe = vi.fn().mockResolvedValue(subscription);
82
+ globalThis.window = {
83
+ multicast: { capabilities: { consumeModes: ["bytes"] }, subscribe },
84
+ };
85
+ const manager = new TransportManager();
86
+ expect(await manager.connect(CONFIG)).toBe(true);
87
+ expect(await manager.connect(CONFIG)).toBe(true);
88
+ expect(unsubscribe).toHaveBeenCalledOnce();
89
+ manager.disconnect();
90
+ expect(unsubscribe).toHaveBeenCalledTimes(2);
91
+ });
92
+ it("releases a stale lease when connect calls overlap", async () => {
93
+ let resolveSubscription;
94
+ const unsubscribe = vi.fn();
95
+ const subscribe = vi.fn().mockReturnValue(new Promise((resolve) => {
96
+ resolveSubscription = resolve;
97
+ }));
98
+ globalThis.window = {
99
+ multicast: { capabilities: { consumeModes: ["bytes"] }, subscribe },
100
+ };
101
+ const manager = new TransportManager();
102
+ const first = manager.connect(CONFIG);
103
+ await vi.waitFor(() => expect(subscribe).toHaveBeenCalledOnce());
104
+ const second = manager.connect(CONFIG);
105
+ resolveSubscription({ addEventListener: vi.fn(), removeEventListener: vi.fn(), unsubscribe });
106
+ expect(await Promise.all([first, second])).toEqual([false, true]);
107
+ expect(subscribe).toHaveBeenCalledOnce();
108
+ manager.disconnect();
109
+ expect(unsubscribe).toHaveBeenCalledOnce();
110
+ });
111
+ it("does not publish a connection completed after disconnect", async () => {
112
+ let resolveSubscription;
113
+ const unsubscribe = vi.fn();
114
+ const subscribe = vi.fn().mockReturnValue(new Promise((resolve) => {
115
+ resolveSubscription = resolve;
116
+ }));
117
+ globalThis.window = {
118
+ multicast: { capabilities: { consumeModes: ["bytes"] }, subscribe },
119
+ };
120
+ const manager = new TransportManager();
121
+ const connecting = manager.connect(CONFIG);
122
+ await vi.waitFor(() => expect(subscribe).toHaveBeenCalledOnce());
123
+ manager.disconnect();
124
+ resolveSubscription({ addEventListener: vi.fn(), removeEventListener: vi.fn(), unsubscribe });
125
+ expect(await connecting).toBe(false);
126
+ expect(manager.getState().connected).toBe(false);
127
+ expect(unsubscribe).toHaveBeenCalledOnce();
128
+ });
129
+ it("rejects invalid endpoints before AMT fallback", async () => {
130
+ globalThis.window = {};
131
+ const manager = new TransportManager();
132
+ const onError = vi.fn();
133
+ manager.setErrorCallback(onError);
134
+ expect(await manager.connect({ ...CONFIG, group: "127.0.0.1", amtRelay: "relay.example" })).toBe(false);
135
+ expect(onError).toHaveBeenCalledOnce();
136
+ });
137
+ it("reports disconnected after an invalid reconnect", async () => {
138
+ const unsubscribe = vi.fn();
139
+ const subscribe = vi.fn().mockResolvedValue({
140
+ addEventListener: vi.fn(), removeEventListener: vi.fn(), unsubscribe,
141
+ });
142
+ globalThis.window = {
143
+ multicast: { capabilities: { consumeModes: ["bytes"] }, subscribe },
144
+ };
145
+ const manager = new TransportManager();
146
+ expect(await manager.connect(CONFIG)).toBe(true);
147
+ expect(await manager.connect({ ...CONFIG, group: "127.0.0.1" })).toBe(false);
148
+ expect(unsubscribe).toHaveBeenCalledOnce();
149
+ expect(manager.getState()).toMatchObject({
150
+ mode: "disconnected",
151
+ connected: false,
152
+ });
153
+ });
154
+ });
155
+ //# sourceMappingURL=transport-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-manager.test.js","sourceRoot":"","sources":["../src/transport-manager.test.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -3,44 +3,41 @@
3
3
  *
4
4
  * Shared interfaces for unified transport (WebTransport, SSM, AMT, DRIAD) and FEC.
5
5
  */
6
- /** window.Multicast API type (from IWA/Chrome Direct Sockets) */
7
- export interface MulticastAPI {
8
- subscribeSSM?: (config: {
9
- group: string;
10
- source: string;
11
- port: number;
12
- protocol?: string;
13
- fec?: boolean;
14
- }) => Promise<MulticastSubscription>;
15
- subscribe?: (config: {
16
- group: string;
17
- port: number;
18
- protocol?: string;
19
- fec?: boolean;
20
- }) => Promise<MulticastSubscription>;
21
- connectAMT?: (config: {
22
- relay: string;
23
- group: string;
24
- source?: string;
25
- port: number;
26
- }) => Promise<{
27
- onpacket?: (event: {
28
- data: ArrayBuffer;
29
- }) => void;
30
- close: () => void;
31
- }>;
32
- fecDecode?: boolean;
6
+ /** window.multicast gateway config for byte subscriptions. */
7
+ export interface WindowMulticastSubscribeConfig {
8
+ group: string;
9
+ port: number;
10
+ source?: string;
11
+ consume: "bytes";
12
+ mode?: "auto" | "native" | "tunnel";
13
+ amtRelay?: string;
14
+ amtRelayPort?: number;
33
15
  }
34
- export interface MulticastSubscription {
35
- onpacket?: (event: {
36
- data: ArrayBuffer;
37
- }) => void;
38
- onerror?: (error: Error) => void;
39
- unsubscribe: () => void;
16
+ export type WindowMulticastSubscriptionState = "connecting" | "connected" | "reconnecting" | "closed";
17
+ export interface WindowMulticastSubscriptionEventMap {
18
+ bytes: CustomEvent<ArrayBuffer>;
19
+ state: CustomEvent<WindowMulticastSubscriptionState>;
20
+ error: CustomEvent<unknown>;
21
+ }
22
+ /** window.multicast subscription returned by the IWA gateway surface. */
23
+ export interface WindowMulticastSubscription {
24
+ readonly id?: string;
25
+ readonly state?: WindowMulticastSubscriptionState;
26
+ addEventListener<K extends keyof WindowMulticastSubscriptionEventMap>(type: K, listener: (ev: WindowMulticastSubscriptionEventMap[K]) => void, options?: AddEventListenerOptions | boolean): void;
27
+ removeEventListener<K extends keyof WindowMulticastSubscriptionEventMap>(type: K, listener: (ev: WindowMulticastSubscriptionEventMap[K]) => void, options?: EventListenerOptions | boolean): void;
28
+ unsubscribe: () => Promise<void> | void;
29
+ }
30
+ export interface WindowMulticastCapabilities {
31
+ readonly consumeModes?: ReadonlyArray<"bytes" | string>;
32
+ }
33
+ /** Lowercase window.multicast gateway surface. */
34
+ export interface WindowMulticastGateway {
35
+ subscribe?: (config: WindowMulticastSubscribeConfig) => Promise<WindowMulticastSubscription>;
36
+ capabilities?: WindowMulticastCapabilities | (() => Promise<WindowMulticastCapabilities>);
40
37
  }
41
38
  declare global {
42
39
  interface Window {
43
- Multicast?: MulticastAPI;
40
+ multicast?: WindowMulticastGateway;
44
41
  UDPSocket?: unknown;
45
42
  }
46
43
  }
@@ -56,6 +53,10 @@ export interface TransportConfig {
56
53
  streamType: "video" | "audio";
57
54
  /** Optional AMT relay host for unicast tunneling */
58
55
  amtRelay?: string;
56
+ /** Optional AMT relay port. */
57
+ amtRelayPort?: number;
58
+ /** Browser gateway transport preference. */
59
+ mode?: "auto" | "native" | "tunnel";
59
60
  /** DRIAD discovery enabled */
60
61
  driadEnabled?: boolean;
61
62
  /** Initial bitrate quality level */
@@ -78,14 +79,13 @@ export interface TransportCapabilities {
78
79
  driad: boolean;
79
80
  fecDecode: boolean;
80
81
  }
81
- export type TransportMode = "ssm" | "igmp" | "amt" | "driad" | "moq" | "disconnected";
82
+ export type TransportMode = "multicast" | "amt" | "moq" | "disconnected";
82
83
  export interface TransportState {
83
84
  mode: TransportMode;
84
85
  connected: boolean;
85
86
  group?: string;
86
87
  source?: string;
87
88
  amtRelay?: string;
88
- driadRelay?: string;
89
89
  quality?: QualityLevel;
90
90
  packetsReceived: number;
91
91
  bytesReceived: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoSH,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IAClD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,WAAW,IAAI,mBAAmB,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACxD,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AA2BD;;GAEG;AACH,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IAC1B,wBAAwB;IACxB,qDAAQ,CAAA;IACR,wBAAwB;IACxB,mDAAO,CAAA;IACP,sDAAsD;IACtD,2DAAW,CAAA;AACZ,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuTH,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IAClD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,WAAW,IAAI,mBAAmB,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACxD,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AA2BD;;GAEG;AACH,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IAC1B,wBAAwB;IACxB,qDAAQ,CAAA;IACR,wBAAwB;IACxB,mDAAO,CAAA;IACP,sDAAsD;IACtD,2DAAW,CAAA;AACZ,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B"}
@@ -0,0 +1,36 @@
1
+ export interface FallbackTrack {
2
+ name: string;
3
+ type: "video" | "audio";
4
+ }
5
+ export interface FallbackGroup {
6
+ readFrame(): Promise<Uint8Array | undefined>;
7
+ close(): void;
8
+ }
9
+ export interface FallbackSubscription {
10
+ nextGroup(): Promise<FallbackGroup | undefined>;
11
+ close(): void;
12
+ }
13
+ export interface FallbackBroadcast {
14
+ subscribe(name: string, priority: number): FallbackSubscription;
15
+ }
16
+ export interface FallbackSessions {
17
+ enterUnicastFallback(): void;
18
+ }
19
+ export type FallbackGroupLike = FallbackGroup;
20
+ export type FallbackSubLike = FallbackSubscription;
21
+ export type FallbackBroadcastLike = FallbackBroadcast;
22
+ export interface FallbackSessionManagerLike extends FallbackSessions {
23
+ hasActiveFallback(): boolean;
24
+ }
25
+ export declare function runUnicastFallback(input: {
26
+ tracks: FallbackTrack[];
27
+ broadcast: FallbackBroadcast;
28
+ sessions: FallbackSessions;
29
+ onPacket(packet: Uint8Array): void;
30
+ priority: number;
31
+ signal: AbortSignal;
32
+ onError?(trackName: string, error: unknown): void;
33
+ }): {
34
+ done: Promise<void>;
35
+ };
36
+ //# sourceMappingURL=unicast-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicast-fallback.d.ts","sourceRoot":"","sources":["../src/unicast-fallback.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAAE;AACzE,MAAM,WAAW,aAAa;IAAG,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;CAAE;AAC/F,MAAM,WAAW,oBAAoB;IAAG,SAAS,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;CAAE;AACzG,MAAM,WAAW,iBAAiB;IAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAAE;AACvG,MAAM,WAAW,gBAAgB;IAAG,oBAAoB,IAAI,IAAI,CAAC;CAAE;AACnE,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AACnD,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AACtD,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAAG,iBAAiB,IAAI,OAAO,CAAC;CAAE;AAEtG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACzC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAClD,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAsC1B"}
@@ -0,0 +1,53 @@
1
+ export function runUnicastFallback(input) {
2
+ input.sessions.enterUnicastFallback();
3
+ const tracks = Array.from(new Map(input.tracks.map((track) => [track.name, track])).values());
4
+ let resolveAbort;
5
+ const aborted = new Promise((resolve) => {
6
+ resolveAbort = resolve;
7
+ if (input.signal.aborted)
8
+ resolve(undefined);
9
+ });
10
+ const onAbort = () => resolveAbort(undefined);
11
+ if (!input.signal.aborted)
12
+ input.signal.addEventListener("abort", onAbort, { once: true });
13
+ const drainers = tracks.map(async (track) => {
14
+ const subscription = input.broadcast.subscribe(track.name, input.priority);
15
+ try {
16
+ while (!input.signal.aborted) {
17
+ const nextGroup = subscription.nextGroup();
18
+ const group = await Promise.race([nextGroup, aborted]);
19
+ if (!group && input.signal.aborted)
20
+ void nextGroup.then((lateGroup) => lateGroup?.close());
21
+ if (!group)
22
+ break;
23
+ try {
24
+ while (!input.signal.aborted) {
25
+ const frame = await Promise.race([group.readFrame(), aborted]);
26
+ if (!frame)
27
+ break;
28
+ input.onPacket(frame);
29
+ }
30
+ }
31
+ finally {
32
+ group.close();
33
+ }
34
+ }
35
+ }
36
+ catch (error) {
37
+ if (!input.signal.aborted) {
38
+ if (input.onError)
39
+ input.onError(track.name, error);
40
+ else
41
+ console.warn(`[unicast-fallback] drainer error on ${track.name}:`, error);
42
+ }
43
+ }
44
+ finally {
45
+ subscription.close();
46
+ }
47
+ });
48
+ const done = Promise.all(drainers).then(() => undefined).finally(() => {
49
+ input.signal.removeEventListener("abort", onAbort);
50
+ });
51
+ return { done };
52
+ }
53
+ //# sourceMappingURL=unicast-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicast-fallback.js","sourceRoot":"","sources":["../src/unicast-fallback.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockcast/mmt-transport",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Unified transport manager for MoQ with WebTransport, SSM multicast, AMT, DRIAD, and FEC support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,6 +17,9 @@
17
17
  "./clock": {
18
18
  "import": "./dist/clock.js",
19
19
  "types": "./dist/clock.d.ts"
20
+ },
21
+ "./no-modules": {
22
+ "default": "./dist/mmt-transport.no-modules.js"
20
23
  }
21
24
  },
22
25
  "files": [
@@ -24,18 +27,15 @@
24
27
  "src"
25
28
  ],
26
29
  "scripts": {
27
- "build": "tsc",
30
+ "build": "tsc && node build.mjs",
28
31
  "dev": "tsc --watch",
29
32
  "clean": "rm -rf dist",
30
33
  "typecheck": "tsc --noEmit",
31
34
  "test": "vitest run",
32
35
  "test:watch": "vitest"
33
36
  },
34
- "dependencies": {
35
- "@blockcast/mmt-fec": "file:../fec",
36
- "mmt-wasm": "file:../../mmt-wasm/pkg"
37
- },
38
37
  "devDependencies": {
38
+ "esbuild": "^0.21.5",
39
39
  "typescript": "^5.9.3",
40
40
  "vitest": "^1.6.1"
41
41
  },
@@ -10,6 +10,7 @@
10
10
  */
11
11
 
12
12
  import type { QualityLevel } from "./types.js";
13
+ import { selectMulticastTier, type MulticastTierEndpoint } from "./multicast-tier.js";
13
14
 
14
15
  /**
15
16
  * FEC statistics for ABR decisions
@@ -81,6 +82,14 @@ export class AdaptiveBitrateController {
81
82
  return QUALITY_LEVELS[this.currentQualityIndex];
82
83
  }
83
84
 
85
+ /** Selects the multicast (S,G) tier without replacing a player's unicast ABR manager. */
86
+ selectMulticastTier(
87
+ endpoints: readonly MulticastTierEndpoint[],
88
+ estimate: number | undefined = this.getMetrics().measuredBitrate || undefined,
89
+ ): MulticastTierEndpoint | undefined {
90
+ return selectMulticastTier(endpoints, estimate);
91
+ }
92
+
84
93
  /**
85
94
  * Record network sample for bitrate adaptation
86
95
  *
@@ -126,7 +126,8 @@ export class AMTGatewayManager {
126
126
  const keyStr = this.getKeyString(key);
127
127
 
128
128
  if (this.subscriptions.has(keyStr)) {
129
- throw new Error(`Already subscribed to ${keyStr}`);
129
+ console.log(`[AMT] Reusing existing subscription to ${keyStr}`);
130
+ return keyStr;
130
131
  }
131
132
 
132
133
  try {
@@ -0,0 +1,54 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import {
3
+ isMulticastExplicitlyDisabled,
4
+ multicastEndpointKey,
5
+ normalizeMulticastEndpoint,
6
+ readUrlMulticastConfig,
7
+ } from "./endpoint-config.js";
8
+
9
+ describe("multicast endpoint config", () => {
10
+ it("normalizes endpoint identity", () => {
11
+ const endpoint = normalizeMulticastEndpoint({
12
+ groupAddress: " 232.99.0.10 ",
13
+ sourceAddress: " 69.25.95.101 ",
14
+ port: 5050,
15
+ });
16
+ expect(endpoint).toEqual({
17
+ groupAddress: "232.99.0.10",
18
+ sourceAddress: "69.25.95.101",
19
+ port: 5050,
20
+ });
21
+ expect(multicastEndpointKey(endpoint!)).toBe(
22
+ '["69.25.95.101","232.99.0.10",5050,"auto","",""]',
23
+ );
24
+ });
25
+
26
+ it("does not alias endpoint fields containing key delimiters", () => {
27
+ const base = { groupAddress: "232.99.0.10", port: 5050, mode: "tunnel" as const };
28
+ expect(multicastEndpointKey({ ...base, amtRelay: "relay|2268" })).not.toBe(
29
+ multicastEndpointKey({ ...base, amtRelay: "relay", amtRelayPort: 2268 }),
30
+ );
31
+ });
32
+
33
+ it("rejects invalid groups and ports", () => {
34
+ expect(normalizeMulticastEndpoint({ groupAddress: "127.0.0.1", port: 5050 })).toBeUndefined();
35
+ expect(normalizeMulticastEndpoint({ groupAddress: "232.1.1.1", port: 0 })).toBeUndefined();
36
+ });
37
+
38
+ it("preserves explicit AMT URL configuration", () => {
39
+ expect(readUrlMulticastConfig(
40
+ "?mc_group=232.99.0.10&mc_source=69.25.95.101&mc_port=5050&mc_amt_relay=relay.example&mc_amt_relay_port=2268",
41
+ )).toEqual({
42
+ groupAddress: "232.99.0.10",
43
+ sourceAddress: "69.25.95.101",
44
+ port: 5050,
45
+ mode: "tunnel",
46
+ amtRelay: "relay.example",
47
+ amtRelayPort: 2268,
48
+ });
49
+ });
50
+
51
+ it("recognizes explicit MoQ-only selection", () => {
52
+ expect(isMulticastExplicitlyDisabled("?transport=moq-only")).toBe(true);
53
+ });
54
+ });