@100mslive/hms-video-store 0.2.82 → 0.2.83

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 (92) hide show
  1. package/dist/common/ui-logger.d.ts +13 -13
  2. package/dist/core/IHMSActions.d.ts +266 -264
  3. package/dist/core/IHMSNotifications.d.ts +14 -15
  4. package/dist/core/IHMSStore.d.ts +54 -56
  5. package/dist/core/hmsSDKStore/HMSNotifications.d.ts +25 -25
  6. package/dist/core/hmsSDKStore/HMSPlaylist.d.ts +21 -21
  7. package/dist/core/hmsSDKStore/HMSReactiveStore.d.ts +79 -79
  8. package/dist/core/hmsSDKStore/HMSSDKActions.d.ts +157 -157
  9. package/dist/core/hmsSDKStore/adapter.d.ts +49 -49
  10. package/dist/core/hmsSDKStore/common/mapping.d.ts +7 -7
  11. package/dist/core/hmsSDKStore/internalTypes.d.ts +4 -4
  12. package/dist/core/hmsSDKStore/sdkTypes.d.ts +3 -2
  13. package/dist/core/hmsSDKStore/sdkUtils/ActionBatcher.d.ts +19 -19
  14. package/dist/core/hmsSDKStore/sdkUtils/sdkUtils.d.ts +2 -2
  15. package/dist/core/hmsSDKStore/sdkUtils/storeMergeUtils.d.ts +14 -14
  16. package/dist/core/index.d.ts +9 -7
  17. package/dist/core/schema/device-change.d.ts +13 -13
  18. package/dist/core/schema/error.d.ts +13 -13
  19. package/dist/core/schema/index.d.ts +11 -11
  20. package/dist/core/schema/message.d.ts +31 -31
  21. package/dist/core/schema/notification.d.ts +40 -40
  22. package/dist/core/schema/peer.d.ts +67 -67
  23. package/dist/core/schema/playlist.d.ts +127 -109
  24. package/dist/core/schema/requests.d.ts +31 -31
  25. package/dist/core/schema/role.d.ts +3 -3
  26. package/dist/core/schema/room.d.ts +23 -23
  27. package/dist/core/schema/schema.d.ts +29 -29
  28. package/dist/core/schema/settings.d.ts +5 -5
  29. package/dist/core/selectors/derivedSelectors.d.ts +29 -29
  30. package/dist/core/selectors/index.d.ts +5 -5
  31. package/dist/core/selectors/playlistselectors.d.ts +3 -3
  32. package/dist/core/selectors/selectorUtils.d.ts +18 -18
  33. package/dist/core/selectors/selectors.d.ts +185 -191
  34. package/dist/core/selectors/selectorsByID.d.ts +127 -128
  35. package/dist/core/selectors/selectorsByReference.d.ts +3 -3
  36. package/dist/hms-video-store.cjs.js +1 -0
  37. package/dist/hms-video-store.esm.js +1 -5376
  38. package/dist/index.d.ts +1 -1
  39. package/package.json +21 -84
  40. package/dist/hms-video-store.cjs.development.js +0 -5468
  41. package/dist/hms-video-store.cjs.development.js.map +0 -1
  42. package/dist/hms-video-store.cjs.production.min.js +0 -2
  43. package/dist/hms-video-store.cjs.production.min.js.map +0 -1
  44. package/dist/hms-video-store.esm.js.map +0 -1
  45. package/dist/index.js +0 -8
  46. package/dist/test/fakeStore.d.ts +0 -23
  47. package/dist/test/fixtures.d.ts +0 -3
  48. package/src/common/ui-logger.ts +0 -88
  49. package/src/core/IHMSActions.ts +0 -318
  50. package/src/core/IHMSNotifications.ts +0 -16
  51. package/src/core/IHMSStore.ts +0 -60
  52. package/src/core/hmsSDKStore/HMSNotifications.ts +0 -194
  53. package/src/core/hmsSDKStore/HMSPlaylist.ts +0 -78
  54. package/src/core/hmsSDKStore/HMSReactiveStore.ts +0 -271
  55. package/src/core/hmsSDKStore/HMSSDKActions.ts +0 -1156
  56. package/src/core/hmsSDKStore/adapter.ts +0 -244
  57. package/src/core/hmsSDKStore/common/mapping.ts +0 -32
  58. package/src/core/hmsSDKStore/internalTypes.ts +0 -8
  59. package/src/core/hmsSDKStore/sdkTypes.ts +0 -55
  60. package/src/core/hmsSDKStore/sdkUtils/ActionBatcher.ts +0 -63
  61. package/src/core/hmsSDKStore/sdkUtils/sdkUtils.ts +0 -5
  62. package/src/core/hmsSDKStore/sdkUtils/storeMergeUtils.ts +0 -98
  63. package/src/core/index.ts +0 -18
  64. package/src/core/schema/device-change.ts +0 -14
  65. package/src/core/schema/error.ts +0 -13
  66. package/src/core/schema/index.ts +0 -11
  67. package/src/core/schema/message.ts +0 -35
  68. package/src/core/schema/notification.ts +0 -41
  69. package/src/core/schema/peer.ts +0 -78
  70. package/src/core/schema/playlist.ts +0 -114
  71. package/src/core/schema/requests.ts +0 -36
  72. package/src/core/schema/role.ts +0 -5
  73. package/src/core/schema/room.ts +0 -26
  74. package/src/core/schema/schema.ts +0 -94
  75. package/src/core/schema/settings.ts +0 -5
  76. package/src/core/selectors/derivedSelectors.ts +0 -81
  77. package/src/core/selectors/index.ts +0 -5
  78. package/src/core/selectors/playlistselectors.ts +0 -67
  79. package/src/core/selectors/selectorUtils.ts +0 -63
  80. package/src/core/selectors/selectors.ts +0 -400
  81. package/src/core/selectors/selectorsByID.ts +0 -401
  82. package/src/core/selectors/selectorsByReference.ts +0 -45
  83. package/src/index.ts +0 -1
  84. package/src/test/fakeStore.ts +0 -272
  85. package/src/test/fixtures.ts +0 -22
  86. package/src/test/integration/.gitkeep +0 -0
  87. package/src/test/unit/HMSNotifications.test.ts +0 -123
  88. package/src/test/unit/reactiveStore.test.ts +0 -129
  89. package/src/test/unit/roleSelectors.test.ts +0 -85
  90. package/src/test/unit/selectors.test.ts +0 -316
  91. package/src/test/unit/selectorsByReference.test.ts +0 -27
  92. package/src/test/unit/storeMergeUtils.test.ts +0 -168
@@ -1,400 +0,0 @@
1
- import { HMSMessage, HMSPeer, HMSPeerID, HMSRoom, HMSRoomState, HMSStore } from '../schema';
2
- import { createSelector } from 'reselect';
3
- // noinspection ES6PreferShortImport
4
- import { HMSRole } from '../hmsSDKStore/sdkTypes';
5
- import {
6
- getPeerTracksByCondition,
7
- isDegraded,
8
- isVideoPlaylist,
9
- isTrackDisplayEnabled,
10
- isTrackEnabled,
11
- isAudioPlaylist,
12
- isVideo,
13
- } from './selectorUtils';
14
-
15
- /**
16
- * Select the current {@link HMSRoom} object to which you are connected.
17
- * @param store
18
- */
19
- export const selectRoom = (store: HMSStore): HMSRoom => store.room;
20
-
21
- /**
22
- * @internal
23
- */
24
- export const selectPeersMap = (store: HMSStore): Record<HMSPeerID, HMSPeer> => store.peers;
25
-
26
- /**
27
- * @internal
28
- */
29
- export const selectMessagesMap = (store: HMSStore) => store.messages.byID;
30
-
31
- /**
32
- * Select IDs of messages you've sent or received sorted chronologically.
33
- */
34
- export const selectMessageIDsInOrder = (store: HMSStore) => store.messages.allIDs;
35
-
36
- /**
37
- * @internal
38
- */
39
- export const selectTracksMap = (store: HMSStore) => store.tracks;
40
-
41
- /**
42
- * Select your media settings
43
- * i.e., choosen audio input device, audio output device and video input device.
44
- * @param store
45
- */
46
- export const selectLocalMediaSettings = (store: HMSStore) => store.settings;
47
-
48
- /**
49
- * Select the available audio input, audio output and video input devices on your machine.
50
- * @param store
51
- * @returns An object of array of available audio input, audio output and video input devices.
52
- * ```
53
- * type DeviceMap = {
54
- * audioInput: InputDeviceInfo[];
55
- * audioOutput: MediaDeviceInfo[];
56
- * videoInput: InputDeviceInfo[];
57
- * }
58
- * ```
59
- */
60
- export const selectDevices = (store: HMSStore) => {
61
- return store.devices;
62
- };
63
-
64
- export const selectSpeakers = (store: HMSStore) => {
65
- return store.speakers;
66
- };
67
-
68
- /**
69
- * Select a boolean flag denoting whether you've joined a room.
70
- * NOTE: Returns true only after join, returns false during preview.
71
- */
72
- export const selectIsConnectedToRoom = createSelector(
73
- [selectRoom],
74
- room => room && room.isConnected,
75
- );
76
-
77
- export const selectPeerCount = createSelector(selectRoom, room => room.peers.length);
78
-
79
- /**
80
- * Select an array of peers(remote peers and your local peer) present in the room.
81
- */
82
- export const selectPeers = createSelector([selectRoom, selectPeersMap], (room, storePeers) => {
83
- return room.peers.map(peerID => storePeers[peerID]);
84
- });
85
-
86
- /**
87
- * Select an array of tracks(remote peer tracks and your local tracks) present in the room.
88
- */
89
- const selectTracks = createSelector(selectTracksMap, storeTracks => {
90
- return Object.values(storeTracks);
91
- });
92
-
93
- /**
94
- * Select the local peer object object assigned to you.
95
- */
96
- export const selectLocalPeer = createSelector(selectRoom, selectPeersMap, (room, peers) => {
97
- return peers[room.localPeer];
98
- });
99
-
100
- /**
101
- * Select the peer ID of your local peer.
102
- */
103
- export const selectLocalPeerID = createSelector(selectRoom, room => {
104
- return room.localPeer;
105
- });
106
-
107
- /**
108
- * Select the track ID of your local peer's primary audio track
109
- */
110
- export const selectLocalAudioTrackID = createSelector(selectLocalPeer, peer => peer?.audioTrack);
111
-
112
- /**
113
- * Select the track ID of your local peer's primary video track
114
- */
115
- export const selectLocalVideoTrackID = createSelector(selectLocalPeer, peer => peer?.videoTrack);
116
-
117
- /**
118
- * Select an array of track IDs of your local peer's auxiliary tracks
119
- */
120
- const selectLocalAuxiliaryTrackIDs = createSelector(selectLocalPeer, peer => peer?.auxiliaryTracks);
121
-
122
- /**
123
- * Select an array of track IDs of all your local peer's tracks
124
- */
125
- export const selectLocalTrackIDs = createSelector(
126
- [selectLocalAudioTrackID, selectLocalVideoTrackID, selectLocalAuxiliaryTrackIDs],
127
- (audioTrackID, videoTrackID, auxiliaryTrackIDs) => {
128
- const trackIDs: string[] = [...auxiliaryTrackIDs];
129
- audioTrackID && trackIDs.unshift(audioTrackID);
130
- videoTrackID && trackIDs.unshift(videoTrackID);
131
- return trackIDs;
132
- },
133
- );
134
-
135
- /**
136
- * Select remote peers(other users you're connected with via the internet) present in the room.
137
- */
138
- export const selectRemotePeers = createSelector(selectPeers, peers => {
139
- return peers.filter(p => !p.isLocal);
140
- });
141
-
142
- /**
143
- * Select the peer who's speaking the loudest at the moment
144
- */
145
- export const selectDominantSpeaker = createSelector(
146
- selectPeersMap,
147
- selectSpeakers,
148
- (peersMap, speakers) => {
149
- // sort in descending order by audio level
150
- const speakersInOrder = Object.entries(speakers).sort((s1, s2) => {
151
- const s1Level = s1[1]?.audioLevel || 0;
152
- const s2Level = s2[1]?.audioLevel || 0;
153
- return s2Level > s1Level ? 1 : -1;
154
- });
155
- if (
156
- speakersInOrder.length > 0 &&
157
- speakersInOrder[0][1].audioLevel &&
158
- speakersInOrder[0][1].audioLevel > 0
159
- ) {
160
- const peerID = speakersInOrder[0][1].peerID;
161
- if (peerID in peersMap) {
162
- return peersMap[peerID];
163
- }
164
- }
165
- return null;
166
- },
167
- );
168
-
169
- /**
170
- * Select a boolean denoting whether your local audio is unmuted
171
- * and the audio from your microphone is shared to remote peers
172
- */
173
- export const selectIsLocalAudioEnabled = (store: HMSStore) => {
174
- const localPeer = selectLocalPeer(store);
175
- return isTrackEnabled(store, localPeer?.audioTrack);
176
- };
177
-
178
- /**
179
- * Select a boolean denoting whether your local video is unmuted
180
- * and the video from your camera is shared to remote peers
181
- */
182
- export const selectIsLocalVideoEnabled = (store: HMSStore) => {
183
- const localPeer = selectLocalPeer(store);
184
- return isTrackEnabled(store, localPeer?.videoTrack);
185
- };
186
-
187
- /**
188
- * Select a boolean denoting whether you've chosen to unmute and share your local video.
189
- *
190
- * NOTE: Once you call `hmsActions.setLocalVideoEnabled(true)`to unmute your local video,
191
- * it takes some time to fetch your video from your video source.
192
- * This displayEnabled property gives immediate feedback for a more interactive UI,
193
- * without waiting for the video source
194
- */
195
- export const selectIsLocalVideoDisplayEnabled = (store: HMSStore) => {
196
- const localPeer = selectLocalPeer(store);
197
- return isTrackDisplayEnabled(store, localPeer?.videoTrack);
198
- };
199
-
200
- /**
201
- * Select a boolean denoting whether your screen is shared to remote peers in the room.
202
- */
203
- export const selectIsLocalScreenShared = createSelector(
204
- selectLocalPeer,
205
- selectTracksMap,
206
- (localPeer, tracksMap) => {
207
- const { video, audio } = getPeerTracksByCondition(tracksMap, localPeer);
208
- return !!(video || audio);
209
- },
210
- );
211
-
212
- /**
213
- * Select the first peer who is currently sharing their screen.
214
- */
215
- export const selectPeerScreenSharing = createSelector(
216
- selectPeersMap,
217
- selectTracksMap,
218
- (peersMap, tracksMap) => {
219
- let screensharePeer = undefined;
220
- for (const peerID in peersMap) {
221
- const peer = peersMap[peerID];
222
- const { video, audio } = getPeerTracksByCondition(tracksMap, peer);
223
- if (video) {
224
- return peer;
225
- } else if (audio && !screensharePeer) {
226
- screensharePeer = peer;
227
- }
228
- }
229
- return screensharePeer;
230
- },
231
- );
232
-
233
- /**
234
- * Select a boolean denoting whether someone is sharing screen in the room.
235
- */
236
- export const selectIsSomeoneScreenSharing = createSelector(selectPeerScreenSharing, peer => {
237
- return !!peer;
238
- });
239
-
240
- /**
241
- * Select the first peer who is currently sharing their audio only screen
242
- */
243
- export const selectPeerSharingAudio = createSelector(
244
- selectPeersMap,
245
- selectTracksMap,
246
- (peersMap, tracksMap) => {
247
- for (const peerID in peersMap) {
248
- const peer = peersMap[peerID];
249
- const { audio, video } = getPeerTracksByCondition(tracksMap, peer);
250
- if (!video && !!audio) {
251
- return peer;
252
- }
253
- }
254
- return undefined;
255
- },
256
- );
257
-
258
- /**
259
- * Select an array of peers who are currently sharing their screen.
260
- */
261
- export const selectPeersScreenSharing = createSelector(
262
- selectPeersMap,
263
- selectTracksMap,
264
- (peersMap, tracksMap) => {
265
- const videoPeers = [];
266
- const audioPeers = [];
267
- for (const peerID in peersMap) {
268
- const peer = peersMap[peerID];
269
- const { video, audio } = getPeerTracksByCondition(tracksMap, peer);
270
- if (video) {
271
- videoPeers.push(peer);
272
- } else if (audio) {
273
- audioPeers.push(peer);
274
- }
275
- }
276
- return videoPeers.concat(audioPeers);
277
- },
278
- );
279
-
280
- export const selectPeerSharingVideoPlaylist = createSelector(
281
- selectPeersMap,
282
- selectTracksMap,
283
- (peersMap, tracksMap) => {
284
- for (const trackId in tracksMap) {
285
- const track = tracksMap[trackId];
286
- if (isVideoPlaylist(track) && isVideo(track) && track.peerId) {
287
- return peersMap[track.peerId];
288
- }
289
- }
290
- return undefined;
291
- },
292
- );
293
-
294
- export const selectPeerSharingAudioPlaylist = createSelector(
295
- selectPeersMap,
296
- selectTracksMap,
297
- (peersMap, tracksMap) => {
298
- for (const trackId in tracksMap) {
299
- const track = tracksMap[trackId];
300
- if (isAudioPlaylist(track) && track.peerId) {
301
- return peersMap[track.peerId];
302
- }
303
- }
304
- return undefined;
305
- },
306
- );
307
-
308
- /**
309
- * Select an array of tracks that have been degraded(receiving lower video quality/no video) due to bad network locally.
310
- */
311
- export const selectDegradedTracks = createSelector(selectTracks, tracks =>
312
- tracks.filter(isDegraded),
313
- );
314
-
315
- /**
316
- * Select the number of messages(sent and received).
317
- */
318
- export const selectHMSMessagesCount = createSelector(
319
- selectMessageIDsInOrder,
320
- messageIDs => messageIDs.length,
321
- );
322
-
323
- /**
324
- * Select the number of unread messages.
325
- */
326
- export const selectUnreadHMSMessagesCount = createSelector(selectMessagesMap, messages => {
327
- return Object.values(messages).filter(m => !m.read).length;
328
- });
329
-
330
- /**
331
- * Select an array of messages in the room(sent and received).
332
- */
333
- export const selectHMSMessages = createSelector(
334
- selectMessageIDsInOrder,
335
- selectMessagesMap,
336
- (msgIDs, msgMap) => {
337
- const messages: HMSMessage[] = [];
338
- msgIDs.forEach(msgId => {
339
- messages.push(msgMap[msgId]);
340
- });
341
- return messages;
342
- },
343
- );
344
-
345
- /**
346
- * Select the current state of the room.
347
- */
348
- export const selectRoomState = createSelector([selectRoom], room => room && room.roomState);
349
-
350
- /**
351
- * Select a boolean denoting whether the room is in Preview state.
352
- */
353
- export const selectIsInPreview = createSelector(
354
- selectRoomState,
355
- roomState => roomState === HMSRoomState.Preview,
356
- );
357
-
358
- export const selectRoomStarted = createSelector(
359
- selectRoom,
360
- room => room.roomState !== HMSRoomState.Disconnected,
361
- );
362
-
363
- /**
364
- * Select available roles in the room as a map between the role name and {@link HMSRole} object.
365
- */
366
- export const selectRolesMap = (store: HMSStore): Record<string, HMSRole> => {
367
- return store.roles;
368
- };
369
-
370
- /**
371
- * Select an array of names of available roles in the room.
372
- */
373
- export const selectAvailableRoleNames = createSelector([selectRolesMap], rolesMap =>
374
- Object.keys(rolesMap),
375
- );
376
-
377
- /**
378
- * Select the {@link HMSRole} object of your local peer.
379
- */
380
- export const selectLocalPeerRole = createSelector(
381
- [selectLocalPeer, selectRolesMap],
382
- (localPeer, rolesMap) => (localPeer?.roleName ? rolesMap[localPeer.roleName] : null),
383
- );
384
-
385
- /**
386
- * Select a boolean denoting whether if your local peer is allowed to subscribe to any other role.
387
- */
388
- export const selectIsAllowedToSubscribe = createSelector([selectLocalPeerRole], (role): boolean => {
389
- if (!role?.subscribeParams?.subscribeToRoles) {
390
- return false;
391
- }
392
- return role.subscribeParams.subscribeToRoles.length > 0;
393
- });
394
-
395
- /**
396
- * Select the permissions which determine what actions the local peer can do.
397
- */
398
- export const selectPermissions = createSelector(selectLocalPeerRole, role => role?.permissions);
399
- export const selectRecordingState = createSelector(selectRoom, room => room.recording);
400
- export const selectRTMPState = createSelector(selectRoom, room => room.rtmp);