@100mslive/hms-video-store 0.10.29-alpha.0 → 0.11.0

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 (534) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +11 -4
  3. package/dist/{core/IHMSActions.d.ts → IHMSActions.d.ts} +2 -3
  4. package/dist/{core/IHMSStore.d.ts → IHMSStore.d.ts} +1 -1
  5. package/dist/analytics/AdditionalAnalyticsProperties.d.ts +23 -0
  6. package/dist/analytics/AnalyticsEvent.d.ts +49 -0
  7. package/dist/analytics/AnalyticsEventDomains.d.ts +5 -0
  8. package/dist/analytics/AnalyticsEventFactory.d.ts +71 -0
  9. package/dist/analytics/AnalyticsEventLevel.d.ts +12 -0
  10. package/dist/analytics/AnalyticsEventsService.d.ts +19 -0
  11. package/dist/analytics/AnalyticsTimer.d.ts +22 -0
  12. package/dist/analytics/AnalyticsTransport.d.ts +11 -0
  13. package/dist/analytics/HTTPAnalyticsTransport.d.ts +18 -0
  14. package/dist/analytics/IAnalyticsPropertiesProvider.d.ts +4 -0
  15. package/dist/analytics/IAnalyticsTransportProvider.d.ts +6 -0
  16. package/dist/analytics/MediaPluginsAnalyticsFactory.d.ts +21 -0
  17. package/dist/analytics/domain-analytics.d.ts +2 -0
  18. package/dist/analytics/signal-transport/LocalStoageEvents.d.ts +9 -0
  19. package/dist/analytics/signal-transport/SignalAnalyticsTransport.d.ts +8 -0
  20. package/dist/analytics/stats/BaseStatsAnalytics.d.ts +56 -0
  21. package/dist/analytics/stats/PublishStatsAnalytics.d.ts +17 -0
  22. package/dist/analytics/stats/SubscribeStatsAnalytics.d.ts +16 -0
  23. package/dist/analytics/stats/index.d.ts +3 -0
  24. package/dist/analytics/stats/interfaces.d.ts +76 -0
  25. package/dist/audio-sink-manager/AudioSinkManager.d.ts +45 -0
  26. package/dist/audio-sink-manager/index.d.ts +1 -0
  27. package/dist/common/ui-logger.d.ts +1 -1
  28. package/dist/connection/HMSConnection.d.ts +44 -0
  29. package/dist/connection/HMSDataChannel.d.ts +15 -0
  30. package/dist/connection/IConnectionObserver.d.ts +4 -0
  31. package/dist/connection/channel-messages.d.ts +30 -0
  32. package/dist/connection/model.d.ts +8 -0
  33. package/dist/connection/publish/IPublishConnectionObserver.d.ts +10 -0
  34. package/dist/connection/publish/publishConnection.d.ts +11 -0
  35. package/dist/connection/subscribe/ISubscribeConnectionObserver.d.ts +14 -0
  36. package/dist/connection/subscribe/subscribeConnection.d.ts +24 -0
  37. package/dist/controller/beam/BeamSpeakerLabelsLogger.d.ts +2 -2
  38. package/dist/device-manager/AudioOutputManager.d.ts +18 -0
  39. package/dist/device-manager/DeviceManager.d.ts +57 -0
  40. package/dist/device-manager/DeviceStorage.d.ts +30 -0
  41. package/dist/device-manager/DeviceTestData.d.ts +15 -0
  42. package/dist/device-manager/index.d.ts +1 -0
  43. package/dist/error/ErrorCodes.d.ts +64 -0
  44. package/dist/error/ErrorFactory.d.ts +74 -0
  45. package/dist/error/HMSAction.d.ts +19 -0
  46. package/dist/error/HMSException.d.ts +23 -0
  47. package/dist/error/utils.d.ts +9 -0
  48. package/dist/events/EventBus.d.ts +51 -0
  49. package/dist/events/HMSInternalEvent.d.ts +13 -0
  50. package/dist/index.cjs.js +82 -1
  51. package/dist/index.cjs.js.map +4 -4
  52. package/dist/index.d.ts +11 -2
  53. package/dist/index.js +82 -1
  54. package/dist/index.js.map +4 -4
  55. package/dist/interfaces/change-track-state.d.ts +21 -0
  56. package/dist/interfaces/config.d.ts +76 -0
  57. package/dist/interfaces/devices.d.ts +25 -0
  58. package/dist/interfaces/error-listener.d.ts +4 -0
  59. package/dist/interfaces/framework-info.d.ts +19 -0
  60. package/dist/interfaces/get-token.d.ts +7 -0
  61. package/dist/interfaces/hls-config.d.ts +36 -0
  62. package/dist/interfaces/hms.d.ts +87 -0
  63. package/dist/interfaces/index.d.ts +21 -0
  64. package/dist/interfaces/internal.d.ts +4 -0
  65. package/dist/interfaces/leave-room-request.d.ts +6 -0
  66. package/dist/interfaces/message.d.ts +17 -0
  67. package/dist/interfaces/peer/connection-quality.d.ts +13 -0
  68. package/dist/interfaces/peer/hms-local-peer.d.ts +10 -0
  69. package/dist/interfaces/peer/hms-peer.d.ts +23 -0
  70. package/dist/interfaces/peer/hms-remote-peer.d.ts +8 -0
  71. package/dist/interfaces/peer/index.d.ts +4 -0
  72. package/dist/interfaces/peer-list-iterator.d.ts +6 -0
  73. package/dist/interfaces/playlist.d.ts +114 -0
  74. package/dist/interfaces/preview-listener.d.ts +15 -0
  75. package/dist/interfaces/role-change-request.d.ts +11 -0
  76. package/dist/interfaces/role.d.ts +50 -0
  77. package/dist/interfaces/room.d.ts +95 -0
  78. package/dist/interfaces/rtmp-recording-config.d.ts +10 -0
  79. package/dist/interfaces/session-store/index.d.ts +18 -0
  80. package/dist/interfaces/session-store/interactivity-center.d.ts +17 -0
  81. package/dist/interfaces/session-store/polls.d.ts +133 -0
  82. package/dist/interfaces/session-store/whiteboard.d.ts +27 -0
  83. package/dist/interfaces/settings.d.ts +26 -0
  84. package/dist/interfaces/simulcast-layers.d.ts +30 -0
  85. package/dist/interfaces/speaker.d.ts +7 -0
  86. package/dist/interfaces/track-settings.d.ts +114 -0
  87. package/dist/interfaces/types.d.ts +6 -0
  88. package/dist/interfaces/update-listener.d.ts +82 -0
  89. package/dist/interfaces/webrtc-stats.d.ts +96 -0
  90. package/dist/internal.d.ts +12 -0
  91. package/dist/media/settings/HMSAudioTrackSettings.d.ts +28 -0
  92. package/dist/media/settings/HMSTrackSettings.d.ts +25 -0
  93. package/dist/media/settings/HMSVideoTrackSettings.d.ts +47 -0
  94. package/dist/media/settings/index.d.ts +3 -0
  95. package/dist/media/streams/HMSLocalStream.d.ts +16 -0
  96. package/dist/media/streams/HMSMediaStream.d.ts +12 -0
  97. package/dist/media/streams/HMSRemoteStream.d.ts +32 -0
  98. package/dist/media/streams/index.d.ts +3 -0
  99. package/dist/media/tracks/HMSAudioTrack.d.ts +21 -0
  100. package/dist/media/tracks/HMSLocalAudioTrack.d.ts +77 -0
  101. package/dist/media/tracks/HMSLocalVideoTrack.d.ts +149 -0
  102. package/dist/media/tracks/HMSRemoteAudioTrack.d.ts +4 -0
  103. package/dist/media/tracks/HMSRemoteVideoTrack.d.ts +59 -0
  104. package/dist/media/tracks/HMSTrack.d.ts +64 -0
  105. package/dist/media/tracks/HMSTrackType.d.ts +4 -0
  106. package/dist/media/tracks/HMSVideoTrack.d.ts +31 -0
  107. package/dist/media/tracks/VideoElementManager.d.ts +30 -0
  108. package/dist/media/tracks/index.d.ts +14 -0
  109. package/dist/media/tracks/trackUtils.d.ts +15 -0
  110. package/dist/notification-manager/HMSNotificationMethod.d.ts +37 -0
  111. package/dist/notification-manager/HMSNotifications.d.ts +291 -0
  112. package/dist/notification-manager/NotificationManager.d.ts +47 -0
  113. package/dist/notification-manager/fixtures.d.ts +7 -0
  114. package/dist/notification-manager/index.d.ts +2 -0
  115. package/dist/notification-manager/managers/ActiveSpeakerManager.d.ts +10 -0
  116. package/dist/notification-manager/managers/BroadcastManager.d.ts +8 -0
  117. package/dist/notification-manager/managers/ConnectionQualityManager.d.ts +9 -0
  118. package/dist/notification-manager/managers/PeerListManager.d.ts +31 -0
  119. package/dist/notification-manager/managers/PeerManager.d.ts +34 -0
  120. package/dist/notification-manager/managers/PolicyChangeManager.d.ts +16 -0
  121. package/dist/notification-manager/managers/PollsManager.d.ts +15 -0
  122. package/dist/notification-manager/managers/RequestManager.d.ts +19 -0
  123. package/dist/notification-manager/managers/RoomUpdateManager.d.ts +26 -0
  124. package/dist/notification-manager/managers/SessionMetadataManager.d.ts +9 -0
  125. package/dist/notification-manager/managers/TrackManager.d.ts +53 -0
  126. package/dist/notification-manager/managers/WhiteboardManager.d.ts +11 -0
  127. package/dist/notification-manager/managers/onDemandTrackManager.d.ts +28 -0
  128. package/dist/notification-manager/managers/utils.d.ts +4 -0
  129. package/dist/playlist-manager/AudioContextManager.d.ts +15 -0
  130. package/dist/playlist-manager/PlaylistAudioManager.d.ts +28 -0
  131. package/dist/playlist-manager/PlaylistManager.d.ts +60 -0
  132. package/dist/playlist-manager/PlaylistVideoManager.d.ts +39 -0
  133. package/dist/playlist-manager/index.d.ts +1 -0
  134. package/dist/plugins/audio/AudioPluginsAnalytics.d.ts +17 -0
  135. package/dist/plugins/audio/HMSAudioPlugin.d.ts +58 -0
  136. package/dist/plugins/audio/HMSAudioPluginsManager.d.ts +43 -0
  137. package/dist/plugins/audio/index.d.ts +4 -0
  138. package/dist/plugins/index.d.ts +2 -0
  139. package/dist/plugins/video/HMSMediaStreamPlugin.d.ts +9 -0
  140. package/dist/plugins/video/HMSMediaStreamPluginsManager.d.ts +8 -0
  141. package/dist/plugins/video/HMSVideoPlugin.d.ts +67 -0
  142. package/dist/plugins/video/HMSVideoPluginsManager.d.ts +92 -0
  143. package/dist/plugins/video/VideoPluginsAnalytics.d.ts +22 -0
  144. package/dist/plugins/video/index.d.ts +4 -0
  145. package/dist/{core/hmsSDKStore → reactive-store}/HMSNotifications.d.ts +1 -1
  146. package/dist/{core/hmsSDKStore → reactive-store}/HMSPlaylist.d.ts +1 -1
  147. package/dist/{core/hmsSDKStore → reactive-store}/HMSSDKActions.d.ts +8 -6
  148. package/dist/{core/hmsSDKStore → reactive-store}/HMSSessionStore.d.ts +2 -1
  149. package/dist/{core/hmsSDKStore → reactive-store}/adapter.d.ts +4 -3
  150. package/dist/{core/hmsSDKStore → reactive-store}/common/mapping.d.ts +1 -1
  151. package/dist/{core/hmsSDKStore → reactive-store}/sdkUtils/sdkUtils.d.ts +1 -1
  152. package/dist/{core/hmsSDKStore → reactive-store}/sdkUtils/storeMergeUtils.d.ts +2 -2
  153. package/dist/rtc-stats/HMSWebrtcInternals.d.ts +37 -0
  154. package/dist/rtc-stats/HMSWebrtcStats.d.ts +29 -0
  155. package/dist/rtc-stats/index.d.ts +2 -0
  156. package/dist/rtc-stats/utils.d.ts +19 -0
  157. package/dist/{core/schema → schema}/device-change.d.ts +1 -1
  158. package/dist/{core/schema → schema}/index.d.ts +0 -1
  159. package/dist/{core/schema → schema}/message.d.ts +2 -0
  160. package/dist/{core/schema → schema}/notification.d.ts +1 -1
  161. package/dist/{core/schema → schema}/peer.d.ts +1 -1
  162. package/dist/{core/schema → schema}/role.d.ts +1 -1
  163. package/dist/{core/schema → schema}/room.d.ts +1 -1
  164. package/dist/{core/schema → schema}/schema.d.ts +1 -1
  165. package/dist/sdk/HMSPeerListIterator.d.ts +21 -0
  166. package/dist/sdk/LocalTrackManager.d.ts +57 -0
  167. package/dist/sdk/NetworkTestManager.d.ts +15 -0
  168. package/dist/sdk/RoleChangeManager.d.ts +31 -0
  169. package/dist/sdk/WakeLockManager.d.ts +8 -0
  170. package/dist/sdk/index.d.ts +166 -0
  171. package/dist/sdk/models/HMSRoom.d.ts +25 -0
  172. package/dist/sdk/models/peer/HMSLocalPeer.d.ts +18 -0
  173. package/dist/sdk/models/peer/HMSPeer.d.ts +49 -0
  174. package/dist/sdk/models/peer/HMSRemotePeer.d.ts +13 -0
  175. package/dist/sdk/models/peer/index.d.ts +3 -0
  176. package/dist/sdk/store/Store.d.ts +93 -0
  177. package/dist/sdk/store/StoreInterfaces.d.ts +9 -0
  178. package/dist/sdk/store/index.d.ts +1 -0
  179. package/dist/{core/selectors → selectors}/derivedSelectors.d.ts +1 -1
  180. package/dist/{core/selectors → selectors}/selectors.d.ts +10 -10
  181. package/dist/{core/selectors → selectors}/selectorsByID.d.ts +3 -3
  182. package/dist/{core/selectors → selectors}/selectorsByReference.d.ts +2 -2
  183. package/dist/session-store/index.d.ts +17 -0
  184. package/dist/session-store/interactivity-center/HMSInteractivityCenter.d.ts +24 -0
  185. package/dist/session-store/interactivity-center/HMSWhiteboardCenter.d.ts +17 -0
  186. package/dist/session-store/interactivity-center/index.d.ts +1 -0
  187. package/dist/signal/ISignalEventsObserver.d.ts +12 -0
  188. package/dist/signal/ISignalSendParamsProvider.d.ts +3 -0
  189. package/dist/signal/init/index.d.ts +13 -0
  190. package/dist/signal/init/models.d.ts +55 -0
  191. package/dist/signal/interfaces/index.d.ts +10 -0
  192. package/dist/signal/interfaces/polls.d.ts +152 -0
  193. package/dist/signal/interfaces/responses.d.ts +40 -0
  194. package/dist/signal/interfaces/superpowers.d.ts +83 -0
  195. package/dist/signal/interfaces/track.d.ts +12 -0
  196. package/dist/signal/jsonrpc/index.d.ts +92 -0
  197. package/dist/signal/jsonrpc/models.d.ts +64 -0
  198. package/dist/test/fakeStore/fakeHMSStatsStore.d.ts +1 -1
  199. package/dist/test/fakeStore/fakeHMSStore.d.ts +2 -2
  200. package/dist/test/fixtures.d.ts +1 -1
  201. package/dist/transport/ITransportObserver.d.ts +36 -0
  202. package/dist/transport/RetryScheduler.d.ts +39 -0
  203. package/dist/transport/index.d.ts +109 -0
  204. package/dist/transport/models/JoinParameters.d.ts +9 -0
  205. package/dist/transport/models/TransportFailureCategory.d.ts +14 -0
  206. package/dist/transport/models/TransportState.d.ts +9 -0
  207. package/dist/utils/analytics-deviceId.d.ts +1 -0
  208. package/dist/utils/autoplay.d.ts +1 -0
  209. package/dist/utils/constants.d.ts +51 -0
  210. package/dist/utils/date.d.ts +1 -0
  211. package/dist/utils/device-error.d.ts +1 -0
  212. package/dist/utils/fetch.d.ts +4 -0
  213. package/dist/utils/id-factory.d.ts +3 -0
  214. package/dist/utils/intersection-observer.d.ts +19 -0
  215. package/dist/utils/json.d.ts +1 -0
  216. package/dist/utils/jwt.d.ts +6 -0
  217. package/dist/utils/local-storage-polyfill.d.ts +1 -0
  218. package/dist/utils/local-storage.d.ts +12 -0
  219. package/dist/utils/logger.d.ts +26 -0
  220. package/dist/utils/math.d.ts +7 -0
  221. package/dist/utils/media.d.ts +15 -0
  222. package/dist/utils/network-info.d.ts +8 -0
  223. package/dist/utils/promise.d.ts +11 -0
  224. package/dist/utils/queue.d.ts +15 -0
  225. package/dist/utils/resize-observer.d.ts +19 -0
  226. package/dist/utils/session-description.d.ts +12 -0
  227. package/dist/utils/support.d.ts +13 -0
  228. package/dist/utils/timer-utils.d.ts +15 -0
  229. package/dist/utils/track-audio-level-monitor.d.ts +38 -0
  230. package/dist/utils/track.d.ts +4 -0
  231. package/dist/utils/track.futuretest.d.ts +1 -0
  232. package/dist/utils/typed-event-emitter.d.ts +14 -0
  233. package/dist/utils/user-agent.d.ts +3 -0
  234. package/dist/utils/validations.d.ts +13 -0
  235. package/dist/{core/webrtc-stats → webrtc-stats}/HMSStats.d.ts +1 -1
  236. package/dist/webrtc-stats/internal.d.ts +1 -0
  237. package/dist/webrtc-stats/selectors.d.ts +20 -0
  238. package/dist/{core/webrtc-stats → webrtc-stats}/webrtc-stats-store.d.ts +1 -1
  239. package/package.json +13 -6
  240. package/src/{core/IHMSActions.ts → IHMSActions.ts} +4 -3
  241. package/src/{core/IHMSStore.ts → IHMSStore.ts} +1 -1
  242. package/src/analytics/AdditionalAnalyticsProperties.ts +27 -0
  243. package/src/analytics/AnalyticsEvent.ts +67 -0
  244. package/src/analytics/AnalyticsEventDomains.ts +5 -0
  245. package/src/analytics/AnalyticsEventFactory.ts +260 -0
  246. package/src/analytics/AnalyticsEventLevel.ts +13 -0
  247. package/src/analytics/AnalyticsEventsService.ts +82 -0
  248. package/src/analytics/AnalyticsTimer.ts +60 -0
  249. package/src/analytics/AnalyticsTransport.ts +53 -0
  250. package/src/analytics/HTTPAnalyticsTransport.ts +120 -0
  251. package/src/analytics/IAnalyticsPropertiesProvider.ts +5 -0
  252. package/src/analytics/IAnalyticsTransportProvider.ts +7 -0
  253. package/src/analytics/MediaPluginsAnalyticsFactory.ts +74 -0
  254. package/src/analytics/domain-analytics.ts +25 -0
  255. package/src/analytics/signal-transport/LocalStoageEvents.ts +34 -0
  256. package/src/analytics/signal-transport/SignalAnalyticsTransport.ts +11 -0
  257. package/src/analytics/stats/BaseStatsAnalytics.ts +177 -0
  258. package/src/analytics/stats/PublishStatsAnalytics.ts +148 -0
  259. package/src/analytics/stats/SubscribeStatsAnalytics.ts +126 -0
  260. package/src/analytics/stats/index.ts +3 -0
  261. package/src/analytics/stats/interfaces.ts +90 -0
  262. package/src/audio-sink-manager/AudioSinkManager.ts +277 -0
  263. package/src/audio-sink-manager/index.ts +1 -0
  264. package/src/common/storeName.ts +1 -1
  265. package/src/common/ui-logger.ts +1 -1
  266. package/src/connection/HMSConnection.ts +202 -0
  267. package/src/connection/HMSDataChannel.ts +44 -0
  268. package/src/connection/IConnectionObserver.ts +6 -0
  269. package/src/connection/channel-messages.ts +34 -0
  270. package/src/connection/model.ts +10 -0
  271. package/src/connection/publish/IPublishConnectionObserver.ts +13 -0
  272. package/src/connection/publish/publishConnection.ts +59 -0
  273. package/src/connection/subscribe/ISubscribeConnectionObserver.ts +26 -0
  274. package/src/connection/subscribe/subscribeConnection.ts +208 -0
  275. package/src/controller/beam/BeamSpeakerLabelsLogger.ts +2 -2
  276. package/src/device-manager/AudioOutputManager.ts +43 -0
  277. package/src/device-manager/DeviceManager.test.ts +42 -0
  278. package/src/device-manager/DeviceManager.ts +424 -0
  279. package/src/device-manager/DeviceStorage.test.ts +38 -0
  280. package/src/device-manager/DeviceStorage.ts +67 -0
  281. package/src/device-manager/DeviceTestData.ts +206 -0
  282. package/src/device-manager/index.ts +1 -0
  283. package/src/error/ErrorCodes.ts +156 -0
  284. package/src/error/ErrorCodes.ts.gyb +69 -0
  285. package/src/error/ErrorFactory.ts +549 -0
  286. package/src/error/ErrorFactory.ts.gyb +109 -0
  287. package/src/error/HMSAction.ts +19 -0
  288. package/src/error/HMSException.ts +50 -0
  289. package/src/error/utils.ts +77 -0
  290. package/src/events/EventBus.ts +80 -0
  291. package/src/events/HMSInternalEvent.ts +27 -0
  292. package/src/feature-flags.d.ts +10 -0
  293. package/src/index.ts +56 -2
  294. package/src/interfaces/change-track-state.ts +24 -0
  295. package/src/interfaces/config.ts +79 -0
  296. package/src/interfaces/devices.ts +30 -0
  297. package/src/interfaces/error-listener.ts +5 -0
  298. package/src/interfaces/framework-info.ts +19 -0
  299. package/src/interfaces/get-token.ts +8 -0
  300. package/src/interfaces/hls-config.ts +38 -0
  301. package/src/interfaces/hms.ts +103 -0
  302. package/src/interfaces/index.ts +21 -0
  303. package/src/interfaces/internal.ts +4 -0
  304. package/src/interfaces/leave-room-request.ts +7 -0
  305. package/src/interfaces/message.ts +18 -0
  306. package/src/interfaces/peer/connection-quality.ts +13 -0
  307. package/src/interfaces/peer/hms-local-peer.ts +12 -0
  308. package/src/interfaces/peer/hms-peer.ts +25 -0
  309. package/src/interfaces/peer/hms-remote-peer.ts +9 -0
  310. package/src/interfaces/peer/index.ts +4 -0
  311. package/src/interfaces/peer-list-iterator.ts +6 -0
  312. package/src/interfaces/playlist.ts +116 -0
  313. package/src/interfaces/preview-listener.ts +16 -0
  314. package/src/interfaces/role-change-request.ts +12 -0
  315. package/src/interfaces/role.ts +54 -0
  316. package/src/interfaces/room.ts +105 -0
  317. package/src/interfaces/rtmp-recording-config.ts +11 -0
  318. package/src/interfaces/session-store/index.ts +18 -0
  319. package/src/{core/schema → interfaces/session-store}/interactivity-center.ts +14 -8
  320. package/src/interfaces/session-store/polls.ts +167 -0
  321. package/src/interfaces/session-store/whiteboard.ts +23 -0
  322. package/src/interfaces/settings.ts +26 -0
  323. package/src/interfaces/simulcast-layers.ts +36 -0
  324. package/src/interfaces/speaker.ts +8 -0
  325. package/src/interfaces/track-settings.ts +121 -0
  326. package/src/interfaces/types.ts +6 -0
  327. package/src/interfaces/update-listener.ts +92 -0
  328. package/src/interfaces/webrtc-stats.ts +97 -0
  329. package/src/internal.ts +19 -0
  330. package/src/media/settings/HMSAudioTrackSettings.ts +95 -0
  331. package/src/media/settings/HMSTrackSettings.ts +83 -0
  332. package/src/media/settings/HMSVideoTrackSettings.ts +153 -0
  333. package/src/media/settings/index.ts +3 -0
  334. package/src/media/streams/HMSLocalStream.ts +77 -0
  335. package/src/media/streams/HMSMediaStream.ts +21 -0
  336. package/src/media/streams/HMSRemoteStream.ts +90 -0
  337. package/src/media/streams/index.ts +3 -0
  338. package/src/media/streams/stream.test.ts +82 -0
  339. package/src/media/tracks/HMSAudioTrack.ts +86 -0
  340. package/src/media/tracks/HMSLocalAudioTrack.ts +284 -0
  341. package/src/media/tracks/HMSLocalVideoTrack.ts +466 -0
  342. package/src/media/tracks/HMSRemoteAudioTrack.ts +11 -0
  343. package/src/media/tracks/HMSRemoteVideoTrack.ts +248 -0
  344. package/src/media/tracks/HMSTrack.ts +112 -0
  345. package/src/media/tracks/HMSTrackType.ts +4 -0
  346. package/src/media/tracks/HMSVideoTrack.ts +89 -0
  347. package/src/media/tracks/RemoteVideoTrack.test.ts +158 -0
  348. package/src/media/tracks/VideoElementManager.ts +182 -0
  349. package/src/media/tracks/index.ts +16 -0
  350. package/src/media/tracks/trackUtils.test.ts +46 -0
  351. package/src/media/tracks/trackUtils.ts +45 -0
  352. package/src/media/tracks/videoElementManager.test.ts +92 -0
  353. package/src/notification-manager/HMSNotificationMethod.ts +38 -0
  354. package/src/notification-manager/HMSNotifications.ts +335 -0
  355. package/src/notification-manager/NotificationManager.ts +198 -0
  356. package/src/notification-manager/fixtures.ts +183 -0
  357. package/src/notification-manager/index.ts +2 -0
  358. package/src/notification-manager/managers/ActiveSpeakerManager.ts +28 -0
  359. package/src/notification-manager/managers/BroadcastManager.ts +21 -0
  360. package/src/notification-manager/managers/ConnectionQualityManager.ts +22 -0
  361. package/src/notification-manager/managers/PeerListManager.ts +173 -0
  362. package/src/notification-manager/managers/PeerManager.ts +189 -0
  363. package/src/notification-manager/managers/PolicyChangeManager.ts +50 -0
  364. package/src/notification-manager/managers/PollsManager.ts +157 -0
  365. package/src/notification-manager/managers/RequestManager.ts +138 -0
  366. package/src/notification-manager/managers/RoomUpdateManager.ts +316 -0
  367. package/src/notification-manager/managers/SessionMetadataManager.ts +26 -0
  368. package/src/notification-manager/managers/TrackManager.ts +296 -0
  369. package/src/notification-manager/managers/WhiteboardManager.ts +44 -0
  370. package/src/notification-manager/managers/onDemandTrackManager.ts +101 -0
  371. package/src/notification-manager/managers/utils.ts +14 -0
  372. package/src/notification-manager/notification-manager.test.ts +226 -0
  373. package/src/playlist-manager/AudioContextManager.ts +44 -0
  374. package/src/playlist-manager/PlaylistAudioManager.ts +105 -0
  375. package/src/playlist-manager/PlaylistManager.ts +389 -0
  376. package/src/playlist-manager/PlaylistVideoManager.ts +153 -0
  377. package/src/playlist-manager/index.ts +1 -0
  378. package/src/plugins/audio/AudioPluginsAnalytics.ts +93 -0
  379. package/src/plugins/audio/HMSAudioPlugin.ts +71 -0
  380. package/src/plugins/audio/HMSAudioPluginsManager.ts +266 -0
  381. package/src/plugins/audio/index.ts +4 -0
  382. package/src/plugins/index.ts +2 -0
  383. package/src/plugins/video/HMSMediaStreamPlugin.ts +11 -0
  384. package/src/plugins/video/HMSMediaStreamPluginsManager.ts +33 -0
  385. package/src/plugins/video/HMSVideoPlugin.ts +81 -0
  386. package/src/plugins/video/HMSVideoPluginsManager.ts +443 -0
  387. package/src/plugins/video/VideoPluginsAnalytics.ts +130 -0
  388. package/src/plugins/video/index.ts +4 -0
  389. package/src/{core/hmsSDKStore → reactive-store}/HMSNotifications.ts +1 -1
  390. package/src/{core/hmsSDKStore → reactive-store}/HMSPlaylist.ts +2 -2
  391. package/src/{core/hmsSDKStore → reactive-store}/HMSReactiveStore.ts +5 -4
  392. package/src/{core/hmsSDKStore → reactive-store}/HMSSDKActions.ts +84 -67
  393. package/src/{core/hmsSDKStore → reactive-store}/HMSSessionStore.ts +2 -1
  394. package/src/{core/hmsSDKStore → reactive-store}/adapter.ts +18 -14
  395. package/src/{core/hmsSDKStore → reactive-store}/common/mapping.ts +1 -1
  396. package/src/{core/hmsSDKStore → reactive-store}/sdkUtils/ActionBatcher.ts +1 -1
  397. package/src/{core/hmsSDKStore → reactive-store}/sdkUtils/sdkUtils.ts +1 -1
  398. package/src/{core/hmsSDKStore → reactive-store}/sdkUtils/storeMergeUtils.ts +2 -2
  399. package/src/rtc-stats/HMSWebrtcInternals.ts +105 -0
  400. package/src/rtc-stats/HMSWebrtcStats.ts +140 -0
  401. package/src/rtc-stats/index.ts +2 -0
  402. package/src/rtc-stats/utils.ts +266 -0
  403. package/src/{core/schema → schema}/device-change.ts +1 -1
  404. package/src/{core/schema → schema}/index.ts +0 -1
  405. package/src/{core/schema → schema}/message.ts +2 -0
  406. package/src/{core/schema → schema}/notification.ts +1 -1
  407. package/src/{core/schema → schema}/peer.ts +1 -1
  408. package/src/{core/schema → schema}/role.ts +1 -1
  409. package/src/{core/schema → schema}/room.ts +1 -1
  410. package/src/{core/schema → schema}/schema.ts +1 -8
  411. package/src/sdk/HMSPeerListIterator.ts +73 -0
  412. package/src/sdk/LocalTrackManager.test.ts +477 -0
  413. package/src/sdk/LocalTrackManager.ts +612 -0
  414. package/src/sdk/NetworkTestManager.ts +119 -0
  415. package/src/sdk/RoleChangeManager.ts +157 -0
  416. package/src/sdk/WakeLockManager.ts +46 -0
  417. package/src/sdk/index.ts +1410 -0
  418. package/src/sdk/models/HMSRoom.ts +29 -0
  419. package/src/sdk/models/peer/HMSLocalPeer.ts +36 -0
  420. package/src/sdk/models/peer/HMSPeer.ts +93 -0
  421. package/src/sdk/models/peer/HMSRemotePeer.ts +18 -0
  422. package/src/sdk/models/peer/index.ts +3 -0
  423. package/src/sdk/models/peer/peer.test.ts +119 -0
  424. package/src/sdk/store/Store.ts +453 -0
  425. package/src/sdk/store/StoreInterfaces.ts +8 -0
  426. package/src/sdk/store/index.ts +1 -0
  427. package/src/{core/selectors → selectors}/derivedSelectors.ts +1 -1
  428. package/src/{core/selectors → selectors}/selectors.ts +1 -1
  429. package/src/{core/selectors → selectors}/selectorsByID.ts +1 -1
  430. package/src/session-store/index.ts +49 -0
  431. package/src/session-store/interactivity-center/HMSInteractivityCenter.ts +250 -0
  432. package/src/session-store/interactivity-center/HMSWhiteboardCenter.ts +98 -0
  433. package/src/session-store/interactivity-center/index.ts +1 -0
  434. package/src/signal/ISignalEventsObserver.ts +20 -0
  435. package/src/signal/ISignalSendParamsProvider.ts +3 -0
  436. package/src/signal/init/index.ts +86 -0
  437. package/src/signal/init/init.test.ts +155 -0
  438. package/src/signal/init/models.ts +61 -0
  439. package/src/signal/interfaces/index.ts +12 -0
  440. package/src/signal/interfaces/polls.ts +189 -0
  441. package/src/signal/interfaces/responses.ts +48 -0
  442. package/src/signal/interfaces/superpowers.ts +98 -0
  443. package/src/signal/interfaces/track.ts +13 -0
  444. package/src/signal/jsonrpc/index.ts +633 -0
  445. package/src/signal/jsonrpc/models.ts +81 -0
  446. package/src/test/fakeStore/fakeHMSStatsStore.ts +1 -1
  447. package/src/test/fakeStore/fakeHMSStore.ts +3 -10
  448. package/src/test/fixtures.ts +1 -1
  449. package/src/test/unit/HMSNotifications.test.ts +5 -5
  450. package/src/test/unit/reactiveStore.test.ts +2 -2
  451. package/src/test/unit/roleSelectors.test.ts +1 -1
  452. package/src/test/unit/selectors.test.ts +1 -1
  453. package/src/test/unit/selectorsByReference.test.ts +1 -1
  454. package/src/test/unit/storeMergeUtils.test.ts +2 -3
  455. package/src/test/unit/webrtc-stats.test.ts +2 -1
  456. package/src/transport/ITransportObserver.ts +45 -0
  457. package/src/transport/RetryScheduler.ts +218 -0
  458. package/src/transport/index.ts +1185 -0
  459. package/src/transport/models/JoinParameters.ts +10 -0
  460. package/src/transport/models/TransportFailureCategory.ts +15 -0
  461. package/src/transport/models/TransportState.ts +9 -0
  462. package/src/utils/analytics-deviceId.ts +15 -0
  463. package/src/utils/autoplay.ts +37 -0
  464. package/src/utils/constants.ts +66 -0
  465. package/src/utils/date.ts +3 -0
  466. package/src/utils/device-error.ts +40 -0
  467. package/src/utils/fetch.ts +34 -0
  468. package/src/utils/id-factory.ts +5 -0
  469. package/src/utils/intersection-observer.test.ts +46 -0
  470. package/src/utils/intersection-observer.ts +54 -0
  471. package/src/utils/json.ts +12 -0
  472. package/src/utils/jwt.test.ts +40 -0
  473. package/src/utils/jwt.ts +40 -0
  474. package/src/utils/local-storage-polyfill.ts +47 -0
  475. package/src/utils/local-storage.ts +44 -0
  476. package/src/utils/logger.ts +100 -0
  477. package/src/utils/math.ts +18 -0
  478. package/src/utils/media.ts +65 -0
  479. package/src/utils/network-info.ts +19 -0
  480. package/src/utils/promise.ts +19 -0
  481. package/src/utils/queue.ts +34 -0
  482. package/src/utils/resize-observer.test.ts +53 -0
  483. package/src/utils/resize-observer.ts +59 -0
  484. package/src/utils/session-description.test.ts +49 -0
  485. package/src/utils/session-description.ts +55 -0
  486. package/src/utils/support.ts +30 -0
  487. package/src/utils/timer-utils.ts +69 -0
  488. package/src/utils/track-audio-level-monitor.ts +153 -0
  489. package/src/utils/track.futuretest.ts +11 -0
  490. package/src/utils/track.ts +30 -0
  491. package/src/utils/typed-event-emitter.ts +35 -0
  492. package/src/utils/user-agent.ts +79 -0
  493. package/src/utils/validations.ts +34 -0
  494. package/src/{core/webrtc-stats → webrtc-stats}/HMSStats.ts +3 -3
  495. package/src/webrtc-stats/internal.ts +2 -0
  496. package/src/{core/webrtc-stats → webrtc-stats}/selectors.ts +1 -1
  497. package/src/{core/webrtc-stats → webrtc-stats}/webrtc-stats-store.ts +4 -2
  498. package/dist/core/hmsSDKStore/HMSInteractivityCenter.d.ts +0 -22
  499. package/dist/core/hmsSDKStore/sdkTypes.d.ts +0 -3
  500. package/dist/core/index.d.ts +0 -8
  501. package/dist/core/schema/interactivity-center.d.ts +0 -10
  502. package/dist/core/webrtc-stats/selectors.d.ts +0 -20
  503. package/src/core/hmsSDKStore/HMSInteractivityCenter.ts +0 -60
  504. package/src/core/hmsSDKStore/sdkTypes.ts +0 -136
  505. package/src/core/index.ts +0 -48
  506. /package/dist/{core/hmsSDKStore → reactive-store}/HMSReactiveStore.d.ts +0 -0
  507. /package/dist/{core/hmsSDKStore → reactive-store}/common/presence.d.ts +0 -0
  508. /package/dist/{core/hmsSDKStore → reactive-store}/internalTypes.d.ts +0 -0
  509. /package/dist/{core/hmsSDKStore → reactive-store}/sdkUtils/ActionBatcher.d.ts +0 -0
  510. /package/dist/{core/schema → schema}/error.d.ts +0 -0
  511. /package/dist/{core/schema → schema}/playlist-selectors.d.ts +0 -0
  512. /package/dist/{core/schema → schema}/playlist.d.ts +0 -0
  513. /package/dist/{core/schema → schema}/requests.d.ts +0 -0
  514. /package/dist/{core/schema → schema}/session-store.d.ts +0 -0
  515. /package/dist/{core/schema → schema}/settings.d.ts +0 -0
  516. /package/dist/{core/selectors → selectors}/common.d.ts +0 -0
  517. /package/dist/{core/selectors → selectors}/index.d.ts +0 -0
  518. /package/dist/{core/selectors → selectors}/playlistselectors.d.ts +0 -0
  519. /package/dist/{core/selectors → selectors}/selectorUtils.d.ts +0 -0
  520. /package/dist/{core/webrtc-stats → webrtc-stats}/index.d.ts +0 -0
  521. /package/src/{core/hmsSDKStore → reactive-store}/common/presence.ts +0 -0
  522. /package/src/{core/hmsSDKStore → reactive-store}/internalTypes.ts +0 -0
  523. /package/src/{core/schema → schema}/error.ts +0 -0
  524. /package/src/{core/schema → schema}/playlist-selectors.ts +0 -0
  525. /package/src/{core/schema → schema}/playlist.ts +0 -0
  526. /package/src/{core/schema → schema}/requests.ts +0 -0
  527. /package/src/{core/schema → schema}/session-store.ts +0 -0
  528. /package/src/{core/schema → schema}/settings.ts +0 -0
  529. /package/src/{core/selectors → selectors}/common.ts +0 -0
  530. /package/src/{core/selectors → selectors}/index.ts +0 -0
  531. /package/src/{core/selectors → selectors}/playlistselectors.ts +0 -0
  532. /package/src/{core/selectors → selectors}/selectorUtils.ts +0 -0
  533. /package/src/{core/selectors → selectors}/selectorsByReference.ts +0 -0
  534. /package/src/{core/webrtc-stats → webrtc-stats}/index.ts +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 Tushar
3
+ Copyright (c) 2023 100ms
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -44,12 +44,17 @@ object received is frozen, and it is not allowed to mutate it. You'll get an err
44
44
  if you try to mutate this data in any way. Immutability of the store is how we ensure
45
45
  it to be consistent and reflect the truth at any point of time.
46
46
 
47
+ ### Installation
48
+ ```
49
+ yarn add @100mslive/hms-video-store
50
+ ```
51
+
47
52
  ### How To Use
48
53
 
49
54
  ```js
50
- const manager = new HMSReactiveStore();
51
- const hmsActions = manager.getHMSActions();
52
- const hmsStore = manager.getStore();
55
+ const hms = new HMSReactiveStore();
56
+ const hmsActions = hms.getHMSActions();
57
+ const hmsStore = hms.getStore();
53
58
 
54
59
  const toggleAudio = () => {
55
60
  const isEnabled = hmsStore.getState(selectIsLocalAudioEnabled);
@@ -83,7 +88,7 @@ function join() {
83
88
  return <>
84
89
  {
85
90
  !isConnected &&
86
- <Button onClick={hmsActions.join()}>Join</Button>
91
+ <Button onClick={() => hmsActions.join()}>Join</Button>
87
92
  }
88
93
  </>
89
94
  }
@@ -97,3 +102,5 @@ function join() {
97
102
 
98
103
  ### Store Graph
99
104
  ![Store State](images/store-graph.png)
105
+
106
+ Refer to [docs](https://www.100ms.live/docs/javascript/v2/quickstart/javascript-quickstart) for more detailed guide
@@ -1,6 +1,5 @@
1
- import { HLSTimedMetadata, HMSAudioPlugin, HMSAudioTrackSettings, HMSConfig, HMSLogLevel, HMSMediaStreamPlugin, HMSMidCallPreviewConfig, HMSPlaylistSettings, HMSPluginSupportResult, HMSPreferredSimulcastLayer, HMSPreviewConfig, HMSScreenShareConfig, HMSVideoPlugin, HMSVideoTrackSettings, TokenRequest, TokenRequestOptions } from '@100mslive/hms-video';
2
- import { HLSConfig, RTMPRecordingConfig } from './hmsSDKStore/sdkTypes';
3
- import { HMSChangeMultiTrackStateParams, HMSGenericTypes, HMSMessageID, HMSPeerID, HMSPeerListIterator, HMSPeerListIteratorOptions, HMSRoleName, HMSTrackID, HMSTrackSource, IHMSInteractivityCenter, IHMSPlaylistActions, IHMSSessionStoreActions } from './schema';
1
+ import { HLSConfig, HLSTimedMetadata, HMSAudioPlugin, HMSAudioTrackSettings, HMSConfig, HMSInteractivityCenter as IHMSInteractivityCenter, HMSLogLevel, HMSMediaStreamPlugin, HMSMidCallPreviewConfig, HMSPlaylistSettings, HMSPluginSupportResult, HMSPreferredSimulcastLayer, HMSPreviewConfig, HMSScreenShareConfig, HMSVideoPlugin, HMSVideoTrackSettings, RTMPRecordingConfig, TokenRequest, TokenRequestOptions } from './internal';
2
+ import { HMSChangeMultiTrackStateParams, HMSGenericTypes, HMSMessageID, HMSPeerID, HMSPeerListIterator, HMSPeerListIteratorOptions, HMSRoleName, HMSTrackID, HMSTrackSource, IHMSPlaylistActions, IHMSSessionStoreActions } from './schema';
4
3
  import { HMSRoleChangeRequest } from './selectors';
5
4
  /**
6
5
  * The below interface defines our SDK API Surface for taking room related actions.
@@ -4,7 +4,7 @@
4
4
  * are exported as interfaces to include tsdoc comments with them.
5
5
  */
6
6
  import { State, StateSelector, StoreApi, Subscribe } from 'zustand/vanilla';
7
- import { NamedSetState } from './hmsSDKStore/internalTypes';
7
+ import { NamedSetState } from './reactive-store/internalTypes';
8
8
  import { HMSGenericTypes, HMSStatsStore, HMSStore } from './schema';
9
9
  /**
10
10
  * HMS Reactive store can be used to subscribe to different parts of the store using selectors
@@ -0,0 +1,23 @@
1
+ import { TransportState } from '../transport/models/TransportState';
2
+ declare type ConnectionType = 'bluetooth' | 'cellular' | 'ethernet' | 'mixed' | 'none' | 'other' | 'unknown' | 'wifi' | 'wimax';
3
+ declare type EffectiveConnectionType = '2g' | '3g' | '4g' | 'slow-2g';
4
+ interface NetworkInformation {
5
+ type: ConnectionType;
6
+ effectiveType: EffectiveConnectionType;
7
+ downlinkMax: number;
8
+ downlink: number;
9
+ rtt: number;
10
+ }
11
+ export interface AdditionalAnalyticsProperties {
12
+ bitrate?: {
13
+ publish?: number;
14
+ subscribe?: number;
15
+ };
16
+ network_info?: Partial<NetworkInformation>;
17
+ document_hidden?: boolean;
18
+ num_degraded_tracks?: number;
19
+ max_sub_bitrate?: number;
20
+ recent_pong_response_times: number[];
21
+ transport_state?: TransportState;
22
+ }
23
+ export {};
@@ -0,0 +1,49 @@
1
+ import { AnalyticsEventLevel } from './AnalyticsEventLevel';
2
+ import { ISignalParamsProvider } from '../signal/ISignalSendParamsProvider';
3
+ interface AnalyticsEventInit {
4
+ name: string;
5
+ level: AnalyticsEventLevel;
6
+ includesPII?: boolean;
7
+ properties?: Record<string, any>;
8
+ timestamp?: number;
9
+ }
10
+ interface SignalEventParams {
11
+ name: string;
12
+ info: any;
13
+ timestamp: number;
14
+ }
15
+ export default class AnalyticsEvent implements ISignalParamsProvider<SignalEventParams> {
16
+ name: string;
17
+ level: AnalyticsEventLevel;
18
+ includesPII: boolean;
19
+ properties: Record<string, any>;
20
+ metadata: {
21
+ token?: string;
22
+ peer: {
23
+ peer_id?: string;
24
+ session_id?: string;
25
+ room_id?: string;
26
+ role?: string;
27
+ room_name?: string;
28
+ joined_at?: number;
29
+ template_id?: string;
30
+ session_started_at?: number;
31
+ user_name?: string;
32
+ user_data?: string;
33
+ };
34
+ userAgent: string;
35
+ };
36
+ timestamp: number;
37
+ event_id: string;
38
+ device_id: string;
39
+ constructor({ name, level, properties, includesPII, timestamp }: AnalyticsEventInit);
40
+ toSignalParams(): {
41
+ name: string;
42
+ info: {
43
+ timestamp: number;
44
+ domain: import("./AnalyticsEventDomains").DomainCategory;
45
+ };
46
+ timestamp: number;
47
+ };
48
+ }
49
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare enum DomainCategory {
2
+ CUSTOM = "CUSTOM",
3
+ LOCAL = "LOCAL",
4
+ HMS = "HMS"
5
+ }
@@ -0,0 +1,71 @@
1
+ import { PublishAnalyticPayload, SubscribeAnalyticPayload } from './stats/interfaces';
2
+ import { AdditionalAnalyticsProperties } from './AdditionalAnalyticsProperties';
3
+ import AnalyticsEvent from './AnalyticsEvent';
4
+ import { IAnalyticsPropertiesProvider } from './IAnalyticsPropertiesProvider';
5
+ import { HMSException } from '../error/HMSException';
6
+ import { DeviceMap, SelectedDevices } from '../interfaces';
7
+ import { HMSTrackSettings } from '../media/settings/HMSTrackSettings';
8
+ import { HMSRemoteVideoTrack } from '../media/tracks/HMSRemoteVideoTrack';
9
+ export default class AnalyticsEventFactory {
10
+ private static KEY_REQUESTED_AT;
11
+ private static KEY_RESPONDED_AT;
12
+ static connect(error?: Error, additionalProperties?: AdditionalAnalyticsProperties, requestedAt?: Date, respondedAt?: Date, endpoint?: string): AnalyticsEvent;
13
+ static disconnect(error?: Error, additionalProperties?: AdditionalAnalyticsProperties): AnalyticsEvent;
14
+ static preview({ error, ...props }: {
15
+ error?: Error;
16
+ time?: number;
17
+ init_response_time?: number;
18
+ ws_connect_time?: number;
19
+ on_policy_change_time?: number;
20
+ local_audio_track_time?: number;
21
+ local_video_track_time?: number;
22
+ }): AnalyticsEvent;
23
+ static join({ error, ...props }: {
24
+ error?: Error;
25
+ is_preview_called?: boolean;
26
+ start?: Date;
27
+ end?: Date;
28
+ time?: number;
29
+ init_response_time?: number;
30
+ ws_connect_time?: number;
31
+ on_policy_change_time?: number;
32
+ local_audio_track_time?: number;
33
+ local_video_track_time?: number;
34
+ retries_join?: number;
35
+ }): AnalyticsEvent;
36
+ static publish({ devices, settings, error }: {
37
+ devices?: DeviceMap;
38
+ settings?: HMSTrackSettings;
39
+ error?: Error;
40
+ }): AnalyticsEvent;
41
+ static hlsPlayerError(error: HMSException): AnalyticsEvent;
42
+ static subscribeFail(error: Error): AnalyticsEvent;
43
+ static leave(): AnalyticsEvent;
44
+ static autoplayError(): AnalyticsEvent;
45
+ static audioPlaybackError(error: HMSException): AnalyticsEvent;
46
+ static deviceChange({ selection, type, devices, error, }: {
47
+ selection: Partial<SelectedDevices>;
48
+ type?: 'change' | 'list' | 'audioInput' | 'audioOutput' | 'video';
49
+ devices: DeviceMap;
50
+ error?: Error;
51
+ }): AnalyticsEvent;
52
+ static performance(stats: IAnalyticsPropertiesProvider): AnalyticsEvent;
53
+ static rtcStats(stats: IAnalyticsPropertiesProvider): AnalyticsEvent;
54
+ static rtcStatsFailed(error: HMSException): AnalyticsEvent;
55
+ /**
56
+ * TODO: remove once everything is switched to server side degradation, this
57
+ * event can be handled on server side as well.
58
+ */
59
+ static degradationStats(track: HMSRemoteVideoTrack, isDegraded: boolean): AnalyticsEvent;
60
+ static audioDetectionFail(error: Error, device?: MediaDeviceInfo): AnalyticsEvent;
61
+ static previewNetworkQuality(properties: {
62
+ downLink?: string;
63
+ score?: number;
64
+ error?: string;
65
+ }): AnalyticsEvent;
66
+ static publishStats(properties: PublishAnalyticPayload): AnalyticsEvent;
67
+ static subscribeStats(properties: SubscribeAnalyticPayload): AnalyticsEvent;
68
+ private static eventNameFor;
69
+ private static getPropertiesWithError;
70
+ private static getErrorProperties;
71
+ }
@@ -0,0 +1,12 @@
1
+ export declare enum HMSAnalyticsLevel {
2
+ VERBOSE = 0,
3
+ INFO = 1,
4
+ ERROR = 2,
5
+ OFF = 3
6
+ }
7
+ export declare enum AnalyticsEventLevel {
8
+ VERBOSE = 0,
9
+ INFO = 1,
10
+ ERROR = 2,
11
+ OFF = 3
12
+ }
@@ -0,0 +1,19 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ import { HMSAnalyticsLevel } from './AnalyticsEventLevel';
3
+ import { AnalyticsTransport } from './AnalyticsTransport';
4
+ import { Store } from '../sdk/store';
5
+ export declare class AnalyticsEventsService {
6
+ private store;
7
+ private bufferSize;
8
+ private readonly TAG;
9
+ private transport;
10
+ private pendingEvents;
11
+ level: HMSAnalyticsLevel;
12
+ constructor(store: Store);
13
+ setTransport(transport: AnalyticsTransport): void;
14
+ reset(): void;
15
+ queue(event: AnalyticsEvent): this;
16
+ flushFailedClientEvents(): void;
17
+ flush(): void;
18
+ private sendClientEventOnHTTP;
19
+ }
@@ -0,0 +1,22 @@
1
+ export declare type TimedEventName = 'init' | 'websocket-open' | 'on-policy-change' | 'local-tracks' | 'preview' | 'join';
2
+ export declare enum TimedEvent {
3
+ INIT = "init_response_time",
4
+ WEBSOCKET_CONNECT = "ws_connect_time",
5
+ ON_POLICY_CHANGE = "on_policy_change_time",
6
+ LOCAL_AUDIO_TRACK = "local_audio_track_time",
7
+ LOCAL_VIDEO_TRACK = "local_video_track_time",
8
+ JOIN = "join_time",
9
+ PREVIEW = "preview_time",
10
+ PEER_LIST = "peer_list_time",
11
+ ROOM_STATE = "room_state_time",
12
+ JOIN_RESPONSE = "join_response_time",
13
+ GET_TOKEN = "GET_TOKEN"
14
+ }
15
+ export declare class AnalyticsTimer {
16
+ private eventPerformanceMeasures;
17
+ start(eventName: TimedEvent): void;
18
+ end(eventName: TimedEvent): void;
19
+ getTimeTaken(eventName: TimedEvent): number | undefined;
20
+ getTimes(...eventNames: TimedEvent[]): {};
21
+ cleanup(): void;
22
+ }
@@ -0,0 +1,11 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ import { IAnalyticsTransportProvider } from './IAnalyticsTransportProvider';
3
+ import { Queue } from '../utils/queue';
4
+ export declare abstract class AnalyticsTransport {
5
+ abstract transportProvider: IAnalyticsTransportProvider;
6
+ abstract failedEvents: Queue<AnalyticsEvent>;
7
+ private readonly TAG;
8
+ sendEvent(event: AnalyticsEvent): void;
9
+ flushFailedEvents(currentPeerId?: string): void;
10
+ private sendSingleEvent;
11
+ }
@@ -0,0 +1,18 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ import { IAnalyticsTransportProvider } from './IAnalyticsTransportProvider';
3
+ import { ENV } from '../utils/support';
4
+ declare class ClientAnalyticsTransport implements IAnalyticsTransportProvider {
5
+ readonly TAG = "[HTTPAnalyticsTransport]";
6
+ private failedEvents;
7
+ isConnected: boolean;
8
+ private env;
9
+ private websocketURL;
10
+ setEnv(env: ENV): void;
11
+ setWebsocketEndpoint(ws: string): void;
12
+ sendEvent(event: AnalyticsEvent): void;
13
+ flushFailedEvents(): void;
14
+ private addEventToStorage;
15
+ private removeFromStorage;
16
+ }
17
+ export declare const HTTPAnalyticsTransport: ClientAnalyticsTransport;
18
+ export {};
@@ -0,0 +1,4 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ export interface IAnalyticsPropertiesProvider {
3
+ toAnalyticsProperties: () => AnalyticsEvent['properties'];
4
+ }
@@ -0,0 +1,6 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ export interface IAnalyticsTransportProvider {
3
+ readonly TAG: string;
4
+ isConnected: boolean;
5
+ sendEvent: (event: AnalyticsEvent) => void;
6
+ }
@@ -0,0 +1,21 @@
1
+ import AnalyticsEvent from './AnalyticsEvent';
2
+ import { HMSException } from '../error/HMSException';
3
+ export default class MediaPluginsAnalyticsFactory {
4
+ static failure(pluginName: string, error: HMSException): AnalyticsEvent;
5
+ static audioPluginFailure(pluginName: string, sampleRate: number, error: HMSException): AnalyticsEvent;
6
+ static audioPluginStats({ pluginName, duration, loadTime, sampleRate, }: {
7
+ pluginName: string;
8
+ duration: number;
9
+ loadTime: number;
10
+ sampleRate: number;
11
+ }): AnalyticsEvent;
12
+ static stats({ pluginName, duration, loadTime, avgPreProcessingTime, avgProcessingTime, inputFrameRate, pluginFrameRate, }: {
13
+ pluginName: string;
14
+ duration: number;
15
+ loadTime: number;
16
+ avgPreProcessingTime: number;
17
+ avgProcessingTime: number;
18
+ inputFrameRate: number;
19
+ pluginFrameRate: number;
20
+ }): AnalyticsEvent;
21
+ }
@@ -0,0 +1,2 @@
1
+ import { DomainCategory } from './AnalyticsEventDomains';
2
+ export declare const domainCategory: DomainCategory;
@@ -0,0 +1,9 @@
1
+ import { Queue } from '../../utils/queue';
2
+ import AnalyticsEvent from '../AnalyticsEvent';
3
+ export declare class LocalStorageEvents extends Queue<AnalyticsEvent> {
4
+ private localStorage;
5
+ constructor();
6
+ enqueue(event: AnalyticsEvent): void;
7
+ dequeue(): AnalyticsEvent | undefined;
8
+ private initLocalStorageQueue;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { LocalStorageEvents } from './LocalStoageEvents';
2
+ import JsonRpcSignal from '../../signal/jsonrpc';
3
+ import { AnalyticsTransport } from '../AnalyticsTransport';
4
+ export declare class SignalAnalyticsTransport extends AnalyticsTransport {
5
+ transportProvider: JsonRpcSignal;
6
+ failedEvents: LocalStorageEvents;
7
+ constructor(transportProvider: JsonRpcSignal);
8
+ }
@@ -0,0 +1,56 @@
1
+ import { LocalAudioTrackAnalytics, LocalBaseSample, LocalVideoSample, LocalVideoTrackAnalytics, PublishAnalyticPayload, RemoteAudioSample, RemoteAudioTrackAnalytics, RemoteVideoSample, RemoteVideoTrackAnalytics, SubscribeAnalyticPayload } from './interfaces';
2
+ import { EventBus } from '../../events/EventBus';
3
+ import { HMSTrackStats } from '../../interfaces';
4
+ import { HMSTrack } from '../../internal';
5
+ import { HMSWebrtcStats } from '../../rtc-stats';
6
+ import { Store } from '../../sdk/store';
7
+ export declare abstract class BaseStatsAnalytics {
8
+ protected store: Store;
9
+ protected eventBus: EventBus;
10
+ protected readonly sampleWindowSize: number;
11
+ protected readonly pushInterval: number;
12
+ private shouldSendEvent;
13
+ protected sequenceNum: number;
14
+ constructor(store: Store, eventBus: EventBus, sampleWindowSize: number, pushInterval: number);
15
+ start(): void;
16
+ stop: () => void;
17
+ private startLoop;
18
+ protected abstract sendEvent(): void;
19
+ protected abstract toAnalytics(): PublishAnalyticPayload | SubscribeAnalyticPayload;
20
+ protected abstract handleStatsUpdate(hmsStats: HMSWebrtcStats): void;
21
+ }
22
+ declare type TempPublishStats = HMSTrackStats & {
23
+ availableOutgoingBitrate?: number;
24
+ };
25
+ export declare abstract class RunningTrackAnalytics {
26
+ readonly sampleWindowSize: number;
27
+ track: HMSTrack;
28
+ track_id: string;
29
+ source: string;
30
+ ssrc: string;
31
+ kind: string;
32
+ rid?: string;
33
+ samples: (LocalBaseSample | LocalVideoSample | RemoteAudioSample | RemoteVideoSample)[];
34
+ protected tempStats: TempPublishStats[];
35
+ constructor({ track, ssrc, rid, kind, sampleWindowSize, }: {
36
+ track: HMSTrack;
37
+ ssrc: string;
38
+ kind: string;
39
+ rid?: string;
40
+ sampleWindowSize: number;
41
+ });
42
+ push(stat: TempPublishStats): void;
43
+ protected abstract toAnalytics: () => LocalAudioTrackAnalytics | LocalVideoTrackAnalytics | RemoteAudioTrackAnalytics | RemoteVideoTrackAnalytics;
44
+ protected abstract createSample: () => LocalBaseSample | LocalVideoSample | RemoteAudioSample | RemoteVideoSample;
45
+ protected getLatestStat(): TempPublishStats;
46
+ protected getFirstStat(): TempPublishStats;
47
+ protected abstract shouldCreateSample: () => boolean;
48
+ protected calculateSum(key: keyof TempPublishStats): number | undefined;
49
+ protected calculateAverage(key: keyof TempPublishStats, round?: boolean): number | undefined;
50
+ protected calculateDifferenceForSample(key: keyof TempPublishStats): number;
51
+ protected calculateInstancesOfHigh(key: keyof TempPublishStats, threshold: number): number | undefined;
52
+ }
53
+ export declare const hasResolutionChanged: (newStat: TempPublishStats, prevStat: TempPublishStats) => boolean;
54
+ export declare const hasEnabledStateChanged: (newStat: TempPublishStats, prevStat: TempPublishStats) => boolean;
55
+ export declare const removeUndefinedFromObject: <T extends Record<string, any>>(data: T) => T;
56
+ export {};
@@ -0,0 +1,17 @@
1
+ import { BaseStatsAnalytics, RunningTrackAnalytics } from './BaseStatsAnalytics';
2
+ import { LocalAudioTrackAnalytics, LocalBaseSample, LocalVideoSample, LocalVideoTrackAnalytics, PublishAnalyticPayload } from './interfaces';
3
+ import { HMSWebrtcStats } from '../../rtc-stats';
4
+ export declare class PublishStatsAnalytics extends BaseStatsAnalytics {
5
+ protected trackAnalytics: Map<string, RunningLocalTrackAnalytics>;
6
+ protected toAnalytics(): PublishAnalyticPayload;
7
+ protected sendEvent(): void;
8
+ protected handleStatsUpdate(hmsStats: HMSWebrtcStats): void;
9
+ private getTrackIdentifier;
10
+ }
11
+ declare class RunningLocalTrackAnalytics extends RunningTrackAnalytics {
12
+ samples: (LocalBaseSample | LocalVideoSample)[];
13
+ protected createSample: () => LocalBaseSample | LocalVideoSample;
14
+ protected shouldCreateSample: () => boolean;
15
+ toAnalytics: () => LocalAudioTrackAnalytics | LocalVideoTrackAnalytics;
16
+ }
17
+ export {};
@@ -0,0 +1,16 @@
1
+ import { BaseStatsAnalytics, RunningTrackAnalytics } from './BaseStatsAnalytics';
2
+ import { RemoteAudioSample, RemoteAudioTrackAnalytics, RemoteVideoSample, RemoteVideoTrackAnalytics, SubscribeAnalyticPayload } from './interfaces';
3
+ import { HMSWebrtcStats } from '../../rtc-stats';
4
+ export declare class SubscribeStatsAnalytics extends BaseStatsAnalytics {
5
+ protected trackAnalytics: Map<string, RunningRemoteTrackAnalytics>;
6
+ protected toAnalytics(): SubscribeAnalyticPayload;
7
+ protected sendEvent(): void;
8
+ protected handleStatsUpdate(hmsStats: HMSWebrtcStats): void;
9
+ }
10
+ declare class RunningRemoteTrackAnalytics extends RunningTrackAnalytics {
11
+ samples: (RemoteAudioSample | RemoteVideoSample)[];
12
+ protected createSample: () => RemoteAudioSample | RemoteVideoSample;
13
+ protected shouldCreateSample: () => boolean;
14
+ toAnalytics: () => RemoteAudioTrackAnalytics | RemoteVideoTrackAnalytics;
15
+ }
16
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './interfaces';
2
+ export { PublishStatsAnalytics } from './PublishStatsAnalytics';
3
+ export { SubscribeStatsAnalytics } from './SubscribeStatsAnalytics';
@@ -0,0 +1,76 @@
1
+ interface BaseStatsPayload {
2
+ sequence_num: number;
3
+ max_window_sec: number;
4
+ joined_at: number;
5
+ }
6
+ export interface PublishAnalyticPayload extends BaseStatsPayload {
7
+ video: Array<LocalAudioTrackAnalytics>;
8
+ audio: Array<LocalAudioTrackAnalytics>;
9
+ }
10
+ export interface SubscribeAnalyticPayload extends BaseStatsPayload {
11
+ video: Array<RemoteVideoTrackAnalytics>;
12
+ audio: Array<RemoteAudioTrackAnalytics>;
13
+ }
14
+ interface TrackAnalytics<Sample> {
15
+ track_id: string;
16
+ rid?: string;
17
+ ssrc: string;
18
+ source: string;
19
+ samples: Array<Sample>;
20
+ }
21
+ export declare type LocalAudioTrackAnalytics = TrackAnalytics<LocalBaseSample>;
22
+ export declare type LocalVideoTrackAnalytics = TrackAnalytics<LocalVideoSample>;
23
+ export declare type RemoteAudioTrackAnalytics = TrackAnalytics<RemoteAudioSample>;
24
+ export declare type RemoteVideoTrackAnalytics = TrackAnalytics<RemoteVideoSample>;
25
+ export interface LocalBaseSample {
26
+ timestamp: number;
27
+ avg_round_trip_time_ms?: number;
28
+ avg_jitter_ms?: number;
29
+ total_packets_lost?: number;
30
+ avg_bitrate_bps?: number;
31
+ avg_available_outgoing_bitrate_bps?: number;
32
+ total_packets_sent?: number;
33
+ total_packet_sent_delay_sec?: number;
34
+ total_nack_count?: number;
35
+ total_fir_count?: number;
36
+ total_pli_count?: number;
37
+ }
38
+ export interface LocalVideoSample extends LocalBaseSample {
39
+ total_quality_limitation?: QualityLimitation;
40
+ avg_fps?: number;
41
+ resolution?: Resolution;
42
+ }
43
+ export interface QualityLimitation {
44
+ bandwith_sec?: number;
45
+ cpu_sec?: number;
46
+ other_sec?: number;
47
+ }
48
+ export interface Resolution {
49
+ width_px?: number;
50
+ height_px?: number;
51
+ }
52
+ interface RemoteBaseSample {
53
+ timestamp: number;
54
+ estimated_playout_timestamp?: number;
55
+ }
56
+ export interface RemoteAudioSample extends RemoteBaseSample {
57
+ audio_level?: number;
58
+ audio_concealed_samples?: number;
59
+ audio_total_samples_received?: number;
60
+ audio_concealment_events?: number;
61
+ fec_packets_discarded?: number;
62
+ fec_packets_received?: number;
63
+ total_samples_duration?: number;
64
+ total_packets_received?: number;
65
+ total_packets_lost?: number;
66
+ jitter_buffer_delay?: number;
67
+ jitter_buffer_delay_high_seconds?: number;
68
+ }
69
+ export interface RemoteVideoSample extends RemoteBaseSample {
70
+ avg_frames_received_per_sec?: number;
71
+ avg_frames_dropped_per_sec?: number;
72
+ avg_frames_decoded_per_sec?: number;
73
+ total_pli_count?: number;
74
+ total_nack_count?: number;
75
+ }
76
+ export {};
@@ -0,0 +1,45 @@
1
+ import { DeviceManager } from '../device-manager';
2
+ import { EventBus } from '../events/EventBus';
3
+ import { HMSUpdateListener } from '../interfaces';
4
+ import { Store } from '../sdk/store';
5
+ export declare class AudioSinkManager {
6
+ private store;
7
+ private deviceManager;
8
+ private eventBus;
9
+ private audioSink?;
10
+ private autoPausedTracks;
11
+ private readonly TAG;
12
+ private volume;
13
+ private state;
14
+ private listener?;
15
+ constructor(store: Store, deviceManager: DeviceManager, eventBus: EventBus);
16
+ setListener(listener?: HMSUpdateListener): void;
17
+ private get outputDevice();
18
+ getVolume(): number;
19
+ setVolume(value: number): Promise<void>;
20
+ /**
21
+ * This function is to be called only on user interaction when
22
+ * autoplay error is received.
23
+ */
24
+ unblockAutoplay(): Promise<void>;
25
+ init(elementId?: string): void;
26
+ cleanup(): void;
27
+ private handleAudioPaused;
28
+ private handleTrackUpdate;
29
+ private handleTrackAdd;
30
+ private handleAutoplayError;
31
+ private handleAudioDeviceChange;
32
+ /**
33
+ * try to play audio for the passed in track, assume autoplay error happened if play fails
34
+ * @param track
35
+ * @private
36
+ */
37
+ private playAudioFor;
38
+ private handleTrackRemove;
39
+ private unpauseAudioTracks;
40
+ private removeAudioElement;
41
+ /**
42
+ * Mweb is not able to play via call channel by default, this is to switch from media channel to call channel
43
+ */
44
+ private autoSelectAudioOutput;
45
+ }
@@ -0,0 +1 @@
1
+ export { AudioSinkManager } from './AudioSinkManager';
@@ -1,4 +1,4 @@
1
- import { HMSLogLevel } from '../core/hmsSDKStore/sdkTypes';
1
+ import { HMSLogLevel } from '../internal';
2
2
  export declare class HMSLogger {
3
3
  static level: HMSLogLevel;
4
4
  static v(tag: string, ...data: any[]): void;
@@ -0,0 +1,44 @@
1
+ import { HMSConnectionRole } from './model';
2
+ import { HMSLocalTrack } from '../media/tracks';
3
+ import { TrackState } from '../notification-manager';
4
+ import JsonRpcSignal from '../signal/jsonrpc';
5
+ interface RTCIceCandidatePair {
6
+ local: RTCIceCandidate;
7
+ remote: RTCIceCandidate;
8
+ }
9
+ export default abstract class HMSConnection {
10
+ readonly role: HMSConnectionRole;
11
+ protected readonly signal: JsonRpcSignal;
12
+ abstract readonly nativeConnection: RTCPeerConnection;
13
+ /**
14
+ * We keep a list of pending IceCandidates received
15
+ * from the signalling server. When the peer-connection
16
+ * is initialized we call [addIceCandidate] for each.
17
+ *
18
+ * WARN:
19
+ * - [HMSPublishConnection] keeps the complete list of candidates (for
20
+ * ice-connection failed/disconnect) forever.
21
+ * - [HMSSubscribeConnection] clears this list as soon as we call [addIceCandidate]
22
+ */
23
+ readonly candidates: RTCIceCandidateInit[];
24
+ selectedCandidatePair?: RTCIceCandidatePair;
25
+ protected constructor(role: HMSConnectionRole, signal: JsonRpcSignal);
26
+ get iceConnectionState(): RTCIceConnectionState;
27
+ get connectionState(): RTCPeerConnectionState;
28
+ private get action();
29
+ addTransceiver(track: MediaStreamTrack, init: RTCRtpTransceiverInit): RTCRtpTransceiver;
30
+ createOffer(tracks?: Map<string, TrackState>, options?: RTCOfferOptions): Promise<RTCSessionDescriptionInit>;
31
+ createAnswer(options?: RTCOfferOptions | undefined): Promise<RTCSessionDescriptionInit>;
32
+ setLocalDescription(description: RTCSessionDescriptionInit): Promise<void>;
33
+ setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
34
+ addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>;
35
+ get remoteDescription(): RTCSessionDescription | null;
36
+ getSenders(): Array<RTCRtpSender>;
37
+ logSelectedIceCandidatePairs(): void;
38
+ removeTrack(sender: RTCRtpSender): void;
39
+ setMaxBitrateAndFramerate(track: HMSLocalTrack): Promise<void>;
40
+ getStats(): Promise<RTCStatsReport>;
41
+ close(): Promise<void>;
42
+ private getReceivers;
43
+ }
44
+ export {};