@agatx/serenada-core 0.6.10

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 (156) hide show
  1. package/dist/ConsoleLogger.d.ts +6 -0
  2. package/dist/ConsoleLogger.d.ts.map +1 -0
  3. package/dist/ConsoleLogger.js +21 -0
  4. package/dist/ConsoleLogger.js.map +1 -0
  5. package/dist/RoomWatcher.d.ts +34 -0
  6. package/dist/RoomWatcher.d.ts.map +1 -0
  7. package/dist/RoomWatcher.js +103 -0
  8. package/dist/RoomWatcher.js.map +1 -0
  9. package/dist/SerenadaCore.d.ts +47 -0
  10. package/dist/SerenadaCore.d.ts.map +1 -0
  11. package/dist/SerenadaCore.js +141 -0
  12. package/dist/SerenadaCore.js.map +1 -0
  13. package/dist/SerenadaDiagnostics.d.ts +49 -0
  14. package/dist/SerenadaDiagnostics.d.ts.map +1 -0
  15. package/dist/SerenadaDiagnostics.js +421 -0
  16. package/dist/SerenadaDiagnostics.js.map +1 -0
  17. package/dist/SerenadaServerProvider.d.ts +48 -0
  18. package/dist/SerenadaServerProvider.d.ts.map +1 -0
  19. package/dist/SerenadaServerProvider.js +296 -0
  20. package/dist/SerenadaServerProvider.js.map +1 -0
  21. package/dist/SerenadaSession.d.ts +180 -0
  22. package/dist/SerenadaSession.d.ts.map +1 -0
  23. package/dist/SerenadaSession.js +1082 -0
  24. package/dist/SerenadaSession.js.map +1 -0
  25. package/dist/SignalingProvider.d.ts +132 -0
  26. package/dist/SignalingProvider.d.ts.map +1 -0
  27. package/dist/SignalingProvider.js +50 -0
  28. package/dist/SignalingProvider.js.map +1 -0
  29. package/dist/api/roomApi.d.ts +2 -0
  30. package/dist/api/roomApi.d.ts.map +1 -0
  31. package/dist/api/roomApi.js +14 -0
  32. package/dist/api/roomApi.js.map +1 -0
  33. package/dist/cameraModes.d.ts +13 -0
  34. package/dist/cameraModes.d.ts.map +1 -0
  35. package/dist/cameraModes.js +35 -0
  36. package/dist/cameraModes.js.map +1 -0
  37. package/dist/configValidation.d.ts +10 -0
  38. package/dist/configValidation.d.ts.map +1 -0
  39. package/dist/configValidation.js +24 -0
  40. package/dist/configValidation.js.map +1 -0
  41. package/dist/constants.d.ts +33 -0
  42. package/dist/constants.d.ts.map +1 -0
  43. package/dist/constants.js +65 -0
  44. package/dist/constants.js.map +1 -0
  45. package/dist/formatError.d.ts +3 -0
  46. package/dist/formatError.d.ts.map +1 -0
  47. package/dist/formatError.js +7 -0
  48. package/dist/formatError.js.map +1 -0
  49. package/dist/iceServers.d.ts +2 -0
  50. package/dist/iceServers.d.ts.map +1 -0
  51. package/dist/iceServers.js +21 -0
  52. package/dist/iceServers.js.map +1 -0
  53. package/dist/index.d.ts +55 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +44 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/layout/computeLayout.d.ts +81 -0
  58. package/dist/layout/computeLayout.d.ts.map +1 -0
  59. package/dist/layout/computeLayout.js +380 -0
  60. package/dist/layout/computeLayout.js.map +1 -0
  61. package/dist/media/AudioLevelMonitor.d.ts +51 -0
  62. package/dist/media/AudioLevelMonitor.d.ts.map +1 -0
  63. package/dist/media/AudioLevelMonitor.js +179 -0
  64. package/dist/media/AudioLevelMonitor.js.map +1 -0
  65. package/dist/media/MediaEngine.d.ts +137 -0
  66. package/dist/media/MediaEngine.d.ts.map +1 -0
  67. package/dist/media/MediaEngine.js +1224 -0
  68. package/dist/media/MediaEngine.js.map +1 -0
  69. package/dist/media/callStats.d.ts +16 -0
  70. package/dist/media/callStats.d.ts.map +1 -0
  71. package/dist/media/callStats.js +214 -0
  72. package/dist/media/callStats.js.map +1 -0
  73. package/dist/media/localVideoRecovery.d.ts +16 -0
  74. package/dist/media/localVideoRecovery.d.ts.map +1 -0
  75. package/dist/media/localVideoRecovery.js +14 -0
  76. package/dist/media/localVideoRecovery.js.map +1 -0
  77. package/dist/recoveryStorage.d.ts +33 -0
  78. package/dist/recoveryStorage.d.ts.map +1 -0
  79. package/dist/recoveryStorage.js +88 -0
  80. package/dist/recoveryStorage.js.map +1 -0
  81. package/dist/serverUrls.d.ts +8 -0
  82. package/dist/serverUrls.d.ts.map +1 -0
  83. package/dist/serverUrls.js +65 -0
  84. package/dist/serverUrls.js.map +1 -0
  85. package/dist/signaling/SignalingEngine.d.ts +126 -0
  86. package/dist/signaling/SignalingEngine.d.ts.map +1 -0
  87. package/dist/signaling/SignalingEngine.js +720 -0
  88. package/dist/signaling/SignalingEngine.js.map +1 -0
  89. package/dist/signaling/payloads.d.ts +76 -0
  90. package/dist/signaling/payloads.d.ts.map +1 -0
  91. package/dist/signaling/payloads.js +160 -0
  92. package/dist/signaling/payloads.js.map +1 -0
  93. package/dist/signaling/roomStatuses.d.ts +9 -0
  94. package/dist/signaling/roomStatuses.d.ts.map +1 -0
  95. package/dist/signaling/roomStatuses.js +71 -0
  96. package/dist/signaling/roomStatuses.js.map +1 -0
  97. package/dist/signaling/transportConfig.d.ts +3 -0
  98. package/dist/signaling/transportConfig.d.ts.map +1 -0
  99. package/dist/signaling/transportConfig.js +27 -0
  100. package/dist/signaling/transportConfig.js.map +1 -0
  101. package/dist/signaling/transports/index.d.ts +13 -0
  102. package/dist/signaling/transports/index.d.ts.map +1 -0
  103. package/dist/signaling/transports/index.js +11 -0
  104. package/dist/signaling/transports/index.js.map +1 -0
  105. package/dist/signaling/transports/sse.d.ts +26 -0
  106. package/dist/signaling/transports/sse.d.ts.map +1 -0
  107. package/dist/signaling/transports/sse.js +131 -0
  108. package/dist/signaling/transports/sse.js.map +1 -0
  109. package/dist/signaling/transports/types.d.ts +17 -0
  110. package/dist/signaling/transports/types.d.ts.map +1 -0
  111. package/dist/signaling/transports/types.js +2 -0
  112. package/dist/signaling/transports/types.js.map +1 -0
  113. package/dist/signaling/transports/ws.d.ts +21 -0
  114. package/dist/signaling/transports/ws.d.ts.map +1 -0
  115. package/dist/signaling/transports/ws.js +93 -0
  116. package/dist/signaling/transports/ws.js.map +1 -0
  117. package/dist/signaling/types.d.ts +53 -0
  118. package/dist/signaling/types.d.ts.map +1 -0
  119. package/dist/signaling/types.js +2 -0
  120. package/dist/signaling/types.js.map +1 -0
  121. package/dist/types.d.ts +279 -0
  122. package/dist/types.d.ts.map +1 -0
  123. package/dist/types.js +3 -0
  124. package/dist/types.js.map +1 -0
  125. package/package.json +43 -0
  126. package/src/ConsoleLogger.ts +14 -0
  127. package/src/RoomWatcher.ts +127 -0
  128. package/src/SerenadaCore.ts +163 -0
  129. package/src/SerenadaDiagnostics.ts +485 -0
  130. package/src/SerenadaServerProvider.ts +362 -0
  131. package/src/SerenadaSession.ts +1258 -0
  132. package/src/SignalingProvider.ts +207 -0
  133. package/src/api/roomApi.ts +16 -0
  134. package/src/cameraModes.ts +34 -0
  135. package/src/configValidation.ts +35 -0
  136. package/src/constants.ts +77 -0
  137. package/src/formatError.ts +5 -0
  138. package/src/iceServers.ts +20 -0
  139. package/src/index.ts +155 -0
  140. package/src/layout/computeLayout.ts +639 -0
  141. package/src/media/AudioLevelMonitor.ts +190 -0
  142. package/src/media/MediaEngine.ts +1183 -0
  143. package/src/media/callStats.ts +260 -0
  144. package/src/media/localVideoRecovery.ts +39 -0
  145. package/src/recoveryStorage.ts +101 -0
  146. package/src/serverUrls.ts +69 -0
  147. package/src/signaling/SignalingEngine.ts +762 -0
  148. package/src/signaling/payloads.ts +215 -0
  149. package/src/signaling/roomStatuses.ts +89 -0
  150. package/src/signaling/transportConfig.ts +30 -0
  151. package/src/signaling/transports/index.ts +26 -0
  152. package/src/signaling/transports/sse.ts +146 -0
  153. package/src/signaling/transports/types.ts +19 -0
  154. package/src/signaling/transports/ws.ts +108 -0
  155. package/src/signaling/types.ts +68 -0
  156. package/src/types.ts +299 -0
@@ -0,0 +1,126 @@
1
+ import type { ReconnectOutcome, RoomState, SignalingMessage } from './types.js';
2
+ import type { RoomStatuses } from './roomStatuses.js';
3
+ import type { TransportKind } from './transports/types.js';
4
+ import type { SerenadaLogger } from '../types.js';
5
+ export interface SignalingEngineConfig {
6
+ wsUrl: string;
7
+ httpBaseUrl: string;
8
+ transports?: TransportKind[];
9
+ logger?: SerenadaLogger;
10
+ }
11
+ export type SignalingStateListener = () => void;
12
+ export type SignalingMessageListener = (msg: SignalingMessage) => void;
13
+ export declare class SignalingEngine {
14
+ isConnected: boolean;
15
+ activeTransport: TransportKind | null;
16
+ clientId: string | null;
17
+ roomState: RoomState | null;
18
+ turnToken: string | null;
19
+ turnTokenTTLMs: number | null;
20
+ error: {
21
+ code: string;
22
+ message: string;
23
+ reason?: string;
24
+ } | null;
25
+ roomStatuses: RoomStatuses;
26
+ /** Most-recent reconnect outcome reported by the server in `joined`. */
27
+ lastReconnectOutcome: ReconnectOutcome | null;
28
+ /**
29
+ * Highest room-state epoch observed so far. Advances monotonically (per
30
+ * room) on every membership change. Used by MediaEngine to gate ICE
31
+ * restart on an authoritative post-reconnect snapshot.
32
+ */
33
+ lastEpoch: number | null;
34
+ /** Epoch at the moment the transport was last observed disconnected. */
35
+ epochAtDisconnect: number | null;
36
+ /**
37
+ * Unix-ms timestamp of the first successful `joined` for the current
38
+ * session. Stable across reconnects so the persisted recovery record
39
+ * carries the original join time, not the latest reattach time.
40
+ */
41
+ private sessionStartTs;
42
+ /**
43
+ * True from disconnect until we've seen a fresh authoritative snapshot
44
+ * for the current room on the new transport. Consumers should suppress
45
+ * ICE restart while this flag is set.
46
+ */
47
+ awaitingPostReconnectSnapshot: boolean;
48
+ private wsUrl;
49
+ private httpBaseUrl;
50
+ private transportOrder;
51
+ private transport;
52
+ private transportIndex;
53
+ private transportConnectedOnce;
54
+ private transportId;
55
+ private currentRoomId;
56
+ private pendingJoin;
57
+ private lastClientId;
58
+ private needsRejoin;
59
+ private reconnectToken;
60
+ private reconnectTokenRoomId;
61
+ private lastPongAt;
62
+ private missedPongs;
63
+ private wsConsecutiveFailures;
64
+ private sseSid;
65
+ private joinAttemptId;
66
+ private joinAcked;
67
+ private joinKickstartTimer;
68
+ private joinRecoveryTimer;
69
+ private joinHardTimeout;
70
+ private turnRefreshTimer;
71
+ private pingInterval;
72
+ private reconnectTimeout;
73
+ private reconnectAttempts;
74
+ private closedByDestroy;
75
+ private connecting;
76
+ private lastCreateMaxParticipants;
77
+ private lastDisplayName;
78
+ private lastPeerId;
79
+ private logger?;
80
+ private messageListeners;
81
+ private stateListeners;
82
+ constructor(config: SignalingEngineConfig);
83
+ connect(): void;
84
+ destroy(): void;
85
+ sendMessage(type: string, payload?: Record<string, unknown>, to?: string): void;
86
+ joinRoom(roomId: string, options?: {
87
+ createMaxParticipants?: number;
88
+ displayName?: string;
89
+ peerId?: string;
90
+ }): void;
91
+ leaveRoom(options?: {
92
+ preserveReconnectState?: boolean;
93
+ }): void;
94
+ endRoom(): void;
95
+ watchRooms(rids: string[]): void;
96
+ clearError(): void;
97
+ subscribeToMessages(cb: SignalingMessageListener): () => void;
98
+ onStateChange(cb: SignalingStateListener): () => void;
99
+ get currentRoom(): string | null;
100
+ private handleIncomingMessage;
101
+ private doConnect;
102
+ private shouldFallback;
103
+ private tryNextTransport;
104
+ private scheduleReconnect;
105
+ private startPingInterval;
106
+ private turnRefreshGate;
107
+ private turnTokenExpiresAtMs;
108
+ setTurnRefreshGate(gate: (() => Promise<boolean>) | null): void;
109
+ private scheduleTurnRefresh;
110
+ private maybeSendTurnRefresh;
111
+ private clearJoinTimers;
112
+ private clearPingInterval;
113
+ private clearTurnRefreshTimer;
114
+ private clearReconnectTimeout;
115
+ private notifyStateChange;
116
+ private resetForTerminal;
117
+ private readonly storageKeyClientId;
118
+ private readonly storageKeyReconnectToken;
119
+ private readonly storageKeyReconnectTokenRoom;
120
+ private loadReconnectStorage;
121
+ private persistClientId;
122
+ private persistReconnectStorage;
123
+ private clearReconnectStorage;
124
+ private persistRecoveryRecord;
125
+ }
126
+ //# sourceMappingURL=SignalingEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalingEngine.d.ts","sourceRoot":"","sources":["../../src/signaling/SignalingEngine.ts"],"names":[],"mappings":"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"}