@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,401 +0,0 @@
1
- import { createSelector } from 'reselect';
2
- import {
3
- selectHMSMessages,
4
- selectLocalPeerID,
5
- selectPeers,
6
- selectPeersMap,
7
- selectTracksMap,
8
- } from './selectors';
9
- import { HMSPeerID, HMSRoleName, HMSStore, HMSTrack, HMSTrackID } from '../schema';
10
- import {
11
- getPeerTracksByCondition,
12
- isAudio,
13
- isVideoPlaylist,
14
- isTrackEnabled,
15
- isVideo,
16
- isAudioPlaylist,
17
- } from './selectorUtils';
18
- import { HMSLogger } from '../../common/ui-logger';
19
-
20
- type byIDSelector<T> = (store: HMSStore, id?: string) => T;
21
-
22
- /**
23
- * StoreSelector is a function that takes in {@link HMSStore} as argument
24
- * and returns a part of the store that is queried using the selector.
25
- * @typeParam T Part of the store that you wish to query.
26
- */
27
- type StoreSelector<T> = (store: HMSStore) => T;
28
-
29
- /**
30
- * takes in a normal selector which has store and id as input and curries it to make it easier to use.
31
- * Before: store.getState((store) => normalSelector(store, peerID))
32
- * After: store.getState(curriedSelector(peerID))
33
- */
34
- function byIDCurry<T>(selector: byIDSelector<T>): (id?: string) => StoreSelector<T> {
35
- return (id?: string) => {
36
- return (store: HMSStore) => selector(store, id);
37
- };
38
- }
39
-
40
- const selectPeerID = (_store: HMSStore, peerID: HMSPeerID | undefined) => peerID;
41
- const selectTrackID = (_store: HMSStore, trackID: HMSTrackID | undefined) => trackID;
42
- const selectRoleName = (_store: HMSStore, roleName: HMSRoleName | undefined) => roleName;
43
-
44
- const selectPeerByIDBare = createSelector([selectPeersMap, selectPeerID], (storePeers, peerID) =>
45
- peerID ? storePeers[peerID] : null,
46
- );
47
-
48
- const selectTrackByIDBare = createSelector(
49
- [selectTracksMap, selectTrackID],
50
- (storeTracks, trackID) => (trackID ? storeTracks[trackID] : null),
51
- );
52
-
53
- /**
54
- * Select the {@link HMSPeer} object given a peer ID.
55
- */
56
- export const selectPeerByID = byIDCurry(selectPeerByIDBare);
57
-
58
- /**
59
- * Select the name of a {@link HMSPeer} given a peer ID.
60
- */
61
- export const selectPeerNameByID = byIDCurry(createSelector(selectPeerByIDBare, peer => peer?.name));
62
-
63
- /**
64
- * Select the {@link HMSTrack} object given a track ID.
65
- */
66
- export const selectTrackByID = byIDCurry(selectTrackByIDBare);
67
-
68
- /**
69
- * Select the primary video track of a peer given a peer ID.
70
- */
71
- export const selectVideoTrackByPeerID = byIDCurry((store: HMSStore, peerID?: HMSPeerID):
72
- | HMSTrack
73
- | undefined => {
74
- const peer = selectPeerByIDBare(store, peerID);
75
- if (peer && peer.videoTrack && peer.videoTrack !== '') {
76
- return store.tracks[peer.videoTrack];
77
- }
78
- return undefined;
79
- });
80
-
81
- /**
82
- * Select the primary audio track of a peer given a peer ID.
83
- */
84
- export const selectAudioTrackByPeerID = byIDCurry((store: HMSStore, peerID?: HMSPeerID):
85
- | HMSTrack
86
- | undefined => {
87
- const peer = selectPeerByIDBare(store, peerID);
88
- if (peer && peer.audioTrack && peer.audioTrack !== '') {
89
- return store.tracks[peer.audioTrack];
90
- }
91
- return undefined;
92
- });
93
-
94
- /**
95
- * Select the camera stream of a peer given a peer ID.
96
- * This is the primary video track of a peer.
97
- */
98
- export const selectCameraStreamByPeerID = selectVideoTrackByPeerID;
99
-
100
- /**
101
- * Select an array of auxiliary tracks of a peer given a peer ID.
102
- */
103
- export const selectAuxiliaryTracksByPeerID = byIDCurry(
104
- (store: HMSStore, peerID?: HMSPeerID): HMSTrack[] => {
105
- const peer = selectPeerByIDBare(store, peerID);
106
- return peer?.auxiliaryTracks.map(trackID => store.tracks[trackID]) || [];
107
- },
108
- );
109
-
110
- const selectSpeakerByTrackID = (store: HMSStore, trackID: HMSTrackID | undefined) => {
111
- return trackID ? store.speakers[trackID] : null;
112
- };
113
-
114
- /**
115
- * Select the audio level of a track given a track ID.
116
- */
117
- export const selectTrackAudioByID = byIDCurry(
118
- createSelector(selectSpeakerByTrackID, speaker => speaker?.audioLevel || 0),
119
- );
120
-
121
- /**
122
- * Select speaker object of audioTrack of a peer given a peer ID.
123
- */
124
- const selectSpeakerByPeerID = (store: HMSStore, peerID: HMSPeerID | undefined) => {
125
- const peerAudioTrack = selectAudioTrackByPeerID(peerID)(store);
126
- return selectSpeakerByTrackID(store, peerAudioTrack?.id);
127
- };
128
-
129
- /**
130
- * Select audio level of audioTrack of a peer given a peer IDß.
131
- */
132
- export const selectPeerAudioByID = byIDCurry(
133
- createSelector(selectSpeakerByPeerID, speaker => speaker?.audioLevel || 0),
134
- );
135
-
136
- /**
137
- * Select the first auxiliary audio track of a peer given a peer ID.
138
- */
139
- export const selectAuxiliaryAudioByPeerID = byIDCurry((store: HMSStore, peerID?: HMSPeerID):
140
- | HMSTrack
141
- | undefined => {
142
- const peer = selectPeerByIDBare(store, peerID);
143
- if (peer) {
144
- const trackID = peer?.auxiliaryTracks.find(trackID => isAudio(store.tracks[trackID]));
145
- return trackID ? store.tracks[trackID] : undefined;
146
- }
147
- return undefined;
148
- });
149
-
150
- export const selectVideoPlaylistVideoTrackByPeerID = byIDCurry(
151
- createSelector(selectTracksMap, selectPeerByIDBare, (tracks, peer) => {
152
- const trackID = peer?.auxiliaryTracks.find(trackID => {
153
- const track = tracks[trackID];
154
- return isVideoPlaylist(track) && isVideo(track);
155
- });
156
- return trackID ? tracks[trackID] : undefined;
157
- }),
158
- );
159
-
160
- export const selectVideoPlaylistAudioTrackByPeerID = byIDCurry(
161
- createSelector(selectTracksMap, selectPeerByIDBare, (tracks, peer) => {
162
- const trackID = peer?.auxiliaryTracks.find(trackID => {
163
- const track = tracks[trackID];
164
- return isVideoPlaylist(track) && isAudio(track);
165
- });
166
- return trackID ? tracks[trackID] : undefined;
167
- }),
168
- );
169
-
170
- export const selectAudioPlaylistTrackByPeerID = byIDCurry(
171
- createSelector(selectTracksMap, selectPeerByIDBare, (tracks, peer) => {
172
- const trackID = peer?.auxiliaryTracks.find(trackID => {
173
- const track = tracks[trackID];
174
- return isAudioPlaylist(track) && isAudio(track);
175
- });
176
- return trackID ? tracks[trackID] : undefined;
177
- }),
178
- );
179
-
180
- export const selectScreenSharesByPeerId = byIDCurry(
181
- createSelector(selectTracksMap, selectPeerByIDBare, (tracks, peer) => {
182
- return getPeerTracksByCondition(tracks, peer);
183
- }),
184
- );
185
-
186
- /**
187
- * Select the screen share video track of a peer given a peer ID.
188
- */
189
- export const selectScreenShareByPeerID = (id?: string) =>
190
- createSelector(selectScreenSharesByPeerId(id), screenshare => {
191
- return screenshare.video;
192
- });
193
-
194
- /**
195
- * Select the screen share audio track of a peer given a peer ID.
196
- */
197
- export const selectScreenShareAudioByPeerID = (id?: string) =>
198
- createSelector(selectScreenSharesByPeerId(id), screenshare => {
199
- return screenshare.audio;
200
- });
201
-
202
- /**
203
- * Select a boolean denoting whether a peer has unmuted audio and sharing it to other peers.
204
- */
205
- export const selectIsPeerAudioEnabled = byIDCurry((store: HMSStore, peerID?: string) => {
206
- const peer = selectPeerByIDBare(store, peerID);
207
- return isTrackEnabled(store, peer?.audioTrack);
208
- });
209
-
210
- /**
211
- * Select a boolean denoting whether a peer has unmuted video and sharing it to other peers.
212
- */
213
- export const selectIsPeerVideoEnabled = byIDCurry((store: HMSStore, peerID?: string) => {
214
- const peer = selectPeerByIDBare(store, peerID);
215
- return isTrackEnabled(store, peer?.videoTrack);
216
- });
217
-
218
- /**
219
- * Select a boolean denoting whether you've muted an audio track locally(only for you) given a track ID.
220
- */
221
- export const selectIsAudioLocallyMuted = byIDCurry((store: HMSStore, trackID?: string) => {
222
- if (trackID && store.tracks[trackID]) {
223
- return store.tracks[trackID].volume === 0;
224
- }
225
- return undefined;
226
- });
227
-
228
- /**
229
- * Select a boolean denoting whether you've muted the primary audio track of a peer locally(only for you) given a peer ID.
230
- */
231
- export const selectIsLocallyMutedByPeerID = byIDCurry((store: HMSStore, peerID?: string) => {
232
- const peer = selectPeerByIDBare(store, peerID);
233
- return selectIsAudioLocallyMuted(peer?.audioTrack)(store);
234
- });
235
-
236
- /**
237
- * Select a boolean denoting whether you've muted the screen share audio track of a peer locally(only for you) given a peer ID.
238
- */
239
- export const selectIsScreenShareLocallyMutedByPeerID = byIDCurry(
240
- (store: HMSStore, peerID?: string) => {
241
- const track = selectScreenShareAudioByPeerID(peerID)(store);
242
- return selectIsAudioLocallyMuted(track?.id)(store);
243
- },
244
- );
245
-
246
- /**
247
- * Select the local audio volume of an audio track given a track ID.
248
- *
249
- * NOTE: **Volume** of a track is different from **Audio Level** of a track,
250
- * - Audio Level measures the audio of a track and it comes from 100ms's servers.
251
- * - Volume is how loud you hear the audio of a track, this is controlled by you at the client side.
252
- */
253
- export const selectAudioTrackVolume = byIDCurry((store: HMSStore, trackID?: string) => {
254
- const track = selectTrackByIDBare(store, trackID);
255
- if (track) {
256
- if (track.type !== 'audio') {
257
- HMSLogger.w('Please pass audio track here');
258
- return undefined;
259
- }
260
- return track.volume;
261
- }
262
- return undefined;
263
- });
264
-
265
- /**
266
- * Select the local audio volume of the primary audio track of a peer given a peer ID.
267
- */
268
- export const selectAudioVolumeByPeerID = byIDCurry((store: HMSStore, peerID?: string) => {
269
- const peer = selectPeerByIDBare(store, peerID);
270
- return selectAudioTrackVolume(peer?.audioTrack)(store);
271
- });
272
-
273
- /**
274
- * Select the local audio volume of the screen share of a peer given a peer ID.
275
- */
276
- export const selectScreenshareAudioVolumeByPeerID = byIDCurry(
277
- (store: HMSStore, peerID?: string) => {
278
- const track = selectScreenShareAudioByPeerID(peerID)(store);
279
- return selectAudioTrackVolume(track?.id)(store);
280
- },
281
- );
282
-
283
- /**
284
- * Select the current simulcast layer of a track given a track ID.
285
- */
286
- export const selectSimulcastLayerByTrack = byIDCurry((store: HMSStore, trackID?: string) => {
287
- const track = selectTrackByIDBare(store, trackID);
288
- if (track) {
289
- if (track.type !== 'video') {
290
- HMSLogger.w('Please pass video track here');
291
- return undefined;
292
- }
293
- return track.layer;
294
- }
295
- return undefined;
296
- });
297
-
298
- const selectMessagesByPeerIDInternal = createSelector(
299
- [selectHMSMessages, selectLocalPeerID, selectPeerID],
300
- (messages, localPeerID, peerID) => {
301
- if (!peerID) {
302
- return undefined;
303
- }
304
- return messages.filter(message => {
305
- // Broadcast message
306
- if (!message.recipientPeer && !message.recipientRoles?.length) {
307
- return false;
308
- }
309
- // if localPeer or peerID is not a sender remove this
310
- if (![localPeerID, peerID].includes(message.sender)) {
311
- return false;
312
- }
313
- // at this point we know the sender is one of local or passed in peer, check the recipient side
314
- return [localPeerID, peerID].includes(message.recipientPeer!);
315
- });
316
- },
317
- );
318
-
319
- const selectMessagesByRoleInternal = createSelector(
320
- [selectHMSMessages, selectRoleName],
321
- (messages, roleName) => {
322
- if (!roleName) {
323
- return undefined;
324
- }
325
- return messages.filter(message => {
326
- // Not Role message - Broadcast message or Private Peer message
327
- if (!message.recipientRoles?.length) {
328
- return false;
329
- }
330
- return message.recipientRoles?.includes(roleName);
331
- });
332
- },
333
- );
334
-
335
- export const selectBroadcastMessages = createSelector(selectHMSMessages, messages => {
336
- return messages.filter(message => {
337
- if (!message.recipientPeer && !message.recipientRoles?.length) {
338
- return true;
339
- }
340
- return false;
341
- });
342
- });
343
-
344
- const selectUnreadMessageCountByRole = createSelector(
345
- [selectMessagesByRoleInternal, selectRoleName],
346
- messages => {
347
- if (!messages) {
348
- return 0;
349
- }
350
- return messages.filter(m => !m.read).length;
351
- },
352
- );
353
-
354
- const selectUnreadMessageCountByPeerID = createSelector(
355
- [selectMessagesByPeerIDInternal, selectPeerID],
356
- messages => {
357
- if (!messages) {
358
- return 0;
359
- }
360
- return messages.filter(m => !m.read).length;
361
- },
362
- );
363
-
364
- export const selectBroadcastMessagesUnreadCount = createSelector(
365
- selectBroadcastMessages,
366
- messages => {
367
- return messages.filter(m => !m.read).length;
368
- },
369
- );
370
-
371
- export const selectMessagesByPeerID = byIDCurry(selectMessagesByPeerIDInternal);
372
-
373
- export const selectMessagesByRole = byIDCurry(selectMessagesByRoleInternal);
374
-
375
- export const selectMessagesUnreadCountByRole = byIDCurry(selectUnreadMessageCountByRole);
376
- export const selectMessagesUnreadCountByPeerID = byIDCurry(selectUnreadMessageCountByPeerID);
377
-
378
- /**
379
- * Select an array of peers of a particular role
380
- * @param role HMSRoleName
381
- * @returns HMSPeer[]
382
- */
383
- export const selectPeersByRole = (role: HMSRoleName) =>
384
- createSelector([selectPeers], peers => {
385
- return peers.filter(p => p.roleName === role);
386
- });
387
-
388
- /**
389
- * Selects the peer metadata for the passed in peer and returns it as JSON. If metadata is not present
390
- * or conversion to JSON gives an error, an empty object is returned.
391
- * Please directly use peer.metadata in case the metadata is not JSON by design.
392
- */
393
- export const selectPeerMetadata = (peerId: HMSPeerID) =>
394
- createSelector(selectPeerByID(peerId), peer => {
395
- try {
396
- return peer?.metadata && peer.metadata !== '' ? JSON.parse(peer.metadata) : {};
397
- } catch (error) {
398
- console.error('cannot parse peer metadata', error);
399
- return {};
400
- }
401
- });
@@ -1,45 +0,0 @@
1
- import { createSelector } from 'reselect';
2
- import {
3
- selectLocalAudioTrackID,
4
- selectLocalVideoTrackID,
5
- selectRolesMap,
6
- selectTracksMap,
7
- } from './selectors';
8
- import { HMSTrack } from '../schema';
9
-
10
- export const selectRoleByRoleName = (roleName: string) =>
11
- createSelector([selectRolesMap], rolesMap => rolesMap[roleName]);
12
-
13
- const selectLocalVideoPlugins = createSelector(
14
- [selectLocalVideoTrackID, selectTracksMap],
15
- (trackID, tracksMap) => {
16
- let track: HMSTrack | null = null;
17
- if (trackID) {
18
- track = tracksMap[trackID];
19
- }
20
- return track?.plugins || [];
21
- },
22
- );
23
-
24
- const selectLocalAudioPlugins = createSelector(
25
- [selectLocalAudioTrackID, selectTracksMap],
26
- (trackID, tracksMap) => {
27
- let track: HMSTrack | null = null;
28
- if (trackID) {
29
- track = tracksMap[trackID];
30
- }
31
- return track?.plugins || [];
32
- },
33
- );
34
-
35
- export const selectIsLocalVideoPluginPresent = (pluginName: string) => {
36
- return createSelector([selectLocalVideoPlugins], plugins => {
37
- return plugins.includes(pluginName);
38
- });
39
- };
40
-
41
- export const selectIsLocalAudioPluginPresent = (pluginName: string) => {
42
- return createSelector([selectLocalAudioPlugins], plugins => {
43
- return plugins.includes(pluginName);
44
- });
45
- };
package/src/index.ts DELETED
@@ -1 +0,0 @@
1
- export * from './core';