@webex/plugin-meetings 2.60.0-next.1 → 2.60.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/annotation/annotation.types.d.ts +42 -0
  2. package/dist/annotation/constants.d.ts +31 -0
  3. package/dist/annotation/index.d.ts +117 -0
  4. package/dist/breakouts/breakout.d.ts +8 -0
  5. package/dist/breakouts/breakout.js +1 -1
  6. package/dist/breakouts/collection.d.ts +5 -0
  7. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  8. package/dist/breakouts/events.d.ts +8 -0
  9. package/dist/breakouts/index.d.ts +5 -0
  10. package/dist/breakouts/index.js +1 -1
  11. package/dist/breakouts/request.d.ts +22 -0
  12. package/dist/breakouts/utils.d.ts +15 -0
  13. package/dist/common/browser-detection.d.ts +9 -0
  14. package/dist/common/collection.d.ts +48 -0
  15. package/dist/common/config.d.ts +2 -0
  16. package/dist/common/errors/captcha-error.d.ts +15 -0
  17. package/dist/common/errors/intent-to-join.d.ts +16 -0
  18. package/dist/common/errors/join-meeting.d.ts +17 -0
  19. package/dist/common/errors/media.d.ts +15 -0
  20. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  21. package/dist/common/errors/parameter.d.ts +15 -0
  22. package/dist/common/errors/password-error.d.ts +15 -0
  23. package/dist/common/errors/permission.d.ts +14 -0
  24. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  25. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  26. package/dist/common/errors/reconnection.d.ts +15 -0
  27. package/dist/common/errors/stats.d.ts +15 -0
  28. package/dist/common/errors/webex-errors.d.ts +93 -0
  29. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  30. package/dist/common/events/events-scope.d.ts +17 -0
  31. package/dist/common/events/events.d.ts +12 -0
  32. package/dist/common/events/trigger-proxy.d.ts +2 -0
  33. package/dist/common/events/util.d.ts +2 -0
  34. package/dist/common/logs/logger-config.d.ts +2 -0
  35. package/dist/common/logs/logger-proxy.d.ts +2 -0
  36. package/dist/common/logs/request.d.ts +36 -0
  37. package/dist/common/queue.d.ts +34 -0
  38. package/dist/config.d.ts +71 -0
  39. package/dist/constants.d.ts +1072 -0
  40. package/dist/constants.js +1 -1
  41. package/dist/constants.js.map +1 -1
  42. package/dist/controls-options-manager/constants.d.ts +4 -0
  43. package/dist/controls-options-manager/enums.d.ts +15 -0
  44. package/dist/controls-options-manager/enums.js +2 -1
  45. package/dist/controls-options-manager/enums.js.map +1 -1
  46. package/dist/controls-options-manager/index.d.ts +136 -0
  47. package/dist/controls-options-manager/types.d.ts +43 -0
  48. package/dist/controls-options-manager/util.d.ts +1 -0
  49. package/dist/index.d.ts +7 -0
  50. package/dist/interpretation/collection.d.ts +5 -0
  51. package/dist/interpretation/index.d.ts +5 -0
  52. package/dist/interpretation/index.js +1 -1
  53. package/dist/interpretation/siLanguage.d.ts +5 -0
  54. package/dist/interpretation/siLanguage.js +1 -1
  55. package/dist/locus-info/controlsUtils.d.ts +2 -0
  56. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  57. package/dist/locus-info/fullState.d.ts +2 -0
  58. package/dist/locus-info/hostUtils.d.ts +2 -0
  59. package/dist/locus-info/index.d.ts +322 -0
  60. package/dist/locus-info/infoUtils.d.ts +2 -0
  61. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  62. package/dist/locus-info/parser.d.ts +272 -0
  63. package/dist/locus-info/parser.js +5 -5
  64. package/dist/locus-info/parser.js.map +1 -1
  65. package/dist/locus-info/selfUtils.d.ts +2 -0
  66. package/dist/media/index.d.ts +34 -0
  67. package/dist/media/index.js +6 -5
  68. package/dist/media/index.js.map +1 -1
  69. package/dist/media/properties.d.ts +93 -0
  70. package/dist/media/util.d.ts +2 -0
  71. package/dist/mediaQualityMetrics/config.d.ts +237 -0
  72. package/dist/mediaQualityMetrics/config.js +1 -202
  73. package/dist/mediaQualityMetrics/config.js.map +1 -1
  74. package/dist/meeting/in-meeting-actions.d.ts +167 -0
  75. package/dist/meeting/in-meeting-actions.js +4 -0
  76. package/dist/meeting/in-meeting-actions.js.map +1 -1
  77. package/dist/meeting/index.d.ts +1719 -0
  78. package/dist/meeting/index.js +288 -155
  79. package/dist/meeting/index.js.map +1 -1
  80. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  81. package/dist/meeting/muteState.d.ts +184 -0
  82. package/dist/meeting/request.d.ts +290 -0
  83. package/dist/meeting/request.type.d.ts +11 -0
  84. package/dist/meeting/state.d.ts +9 -0
  85. package/dist/meeting/util.d.ts +103 -0
  86. package/dist/meeting-info/collection.d.ts +20 -0
  87. package/dist/meeting-info/index.d.ts +69 -0
  88. package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
  89. package/dist/meeting-info/meeting-info-v2.js +3 -0
  90. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  91. package/dist/meeting-info/request.d.ts +22 -0
  92. package/dist/meeting-info/util.d.ts +2 -0
  93. package/dist/meeting-info/utilv2.d.ts +2 -0
  94. package/dist/meeting-info/utilv2.js +14 -29
  95. package/dist/meeting-info/utilv2.js.map +1 -1
  96. package/dist/meetings/collection.d.ts +40 -0
  97. package/dist/meetings/collection.js +17 -0
  98. package/dist/meetings/collection.js.map +1 -1
  99. package/dist/meetings/index.d.ts +378 -0
  100. package/dist/meetings/index.js +30 -9
  101. package/dist/meetings/index.js.map +1 -1
  102. package/dist/meetings/meetings.types.d.ts +4 -0
  103. package/dist/meetings/request.d.ts +27 -0
  104. package/dist/meetings/util.d.ts +18 -0
  105. package/dist/member/index.d.ts +160 -0
  106. package/dist/member/member.types.d.ts +11 -0
  107. package/dist/member/types.d.ts +32 -0
  108. package/dist/member/util.d.ts +2 -0
  109. package/dist/members/collection.d.ts +29 -0
  110. package/dist/members/index.d.ts +353 -0
  111. package/dist/members/request.d.ts +114 -0
  112. package/dist/members/types.d.ts +25 -0
  113. package/dist/members/util.d.ts +215 -0
  114. package/dist/metrics/constants.d.ts +68 -0
  115. package/dist/metrics/constants.js +3 -0
  116. package/dist/metrics/constants.js.map +1 -1
  117. package/dist/metrics/index.d.ts +45 -0
  118. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  119. package/dist/multistream/receiveSlot.d.ts +68 -0
  120. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  121. package/dist/multistream/remoteMedia.d.ts +72 -0
  122. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  123. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  124. package/dist/multistream/sendSlotManager.d.ts +61 -0
  125. package/dist/networkQualityMonitor/index.d.ts +70 -0
  126. package/dist/personal-meeting-room/index.d.ts +47 -0
  127. package/dist/personal-meeting-room/request.d.ts +14 -0
  128. package/dist/personal-meeting-room/util.d.ts +2 -0
  129. package/dist/reachability/index.d.ts +194 -0
  130. package/dist/reachability/request.d.ts +39 -0
  131. package/dist/reactions/constants.d.ts +3 -0
  132. package/dist/reactions/reactions.d.ts +4 -0
  133. package/dist/reactions/reactions.type.d.ts +52 -0
  134. package/dist/reconnection-manager/index.d.ts +136 -0
  135. package/dist/reconnection-manager/index.js +27 -28
  136. package/dist/reconnection-manager/index.js.map +1 -1
  137. package/dist/recording-controller/enums.d.ts +7 -0
  138. package/dist/recording-controller/index.d.ts +207 -0
  139. package/dist/recording-controller/util.d.ts +14 -0
  140. package/dist/roap/index.d.ts +78 -0
  141. package/dist/roap/request.d.ts +41 -0
  142. package/dist/roap/turnDiscovery.d.ts +92 -0
  143. package/dist/rtcMetrics/constants.d.ts +4 -0
  144. package/dist/rtcMetrics/index.d.ts +54 -0
  145. package/dist/rtcMetrics/index.js +25 -0
  146. package/dist/rtcMetrics/index.js.map +1 -1
  147. package/dist/statsAnalyzer/global.d.ts +36 -0
  148. package/dist/statsAnalyzer/index.d.ts +191 -0
  149. package/dist/statsAnalyzer/index.js +53 -146
  150. package/dist/statsAnalyzer/index.js.map +1 -1
  151. package/dist/statsAnalyzer/mqaUtil.d.ts +24 -0
  152. package/dist/statsAnalyzer/mqaUtil.js +11 -12
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/transcription/index.d.ts +64 -0
  155. package/dist/webinar/collection.d.ts +16 -0
  156. package/dist/webinar/index.d.ts +5 -0
  157. package/dist/webinar/index.js +1 -1
  158. package/package.json +26 -27
  159. package/src/constants.ts +10 -4
  160. package/src/controls-options-manager/enums.ts +2 -0
  161. package/src/locus-info/parser.ts +6 -6
  162. package/src/media/index.ts +5 -5
  163. package/src/mediaQualityMetrics/config.ts +0 -135
  164. package/src/meeting/in-meeting-actions.ts +8 -0
  165. package/src/meeting/index.ts +263 -125
  166. package/src/meeting-info/meeting-info-v2.ts +4 -0
  167. package/src/meeting-info/utilv2.ts +6 -19
  168. package/src/meetings/collection.ts +13 -0
  169. package/src/meetings/index.ts +28 -10
  170. package/src/metrics/constants.ts +3 -0
  171. package/src/reconnection-manager/index.ts +63 -68
  172. package/src/rtcMetrics/index.ts +24 -0
  173. package/src/statsAnalyzer/index.ts +68 -216
  174. package/src/statsAnalyzer/mqaUtil.ts +17 -22
  175. package/test/unit/spec/media/index.ts +20 -4
  176. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  177. package/test/unit/spec/meeting/index.js +1376 -189
  178. package/test/unit/spec/meeting/muteState.js +2 -1
  179. package/test/unit/spec/meeting-info/meetinginfov2.js +28 -0
  180. package/test/unit/spec/meetings/collection.js +12 -0
  181. package/test/unit/spec/meetings/index.js +382 -118
  182. package/test/unit/spec/member/util.js +0 -31
  183. package/test/unit/spec/reconnection-manager/index.js +42 -12
  184. package/test/unit/spec/rtcMetrics/index.ts +20 -0
  185. package/test/unit/spec/stats-analyzer/index.js +12 -2
@@ -548,34 +548,3 @@ describe('extractMediaStatus', () => {
548
548
  assert.deepEqual(mediaStatus, {audio: 'RECVONLY', video: 'SENDRECV'});
549
549
  });
550
550
  });
551
-
552
- describe('extractMediaStatus', () => {
553
- it('throws error when there is no participant', () => {
554
- assert.throws(() => {
555
- MemberUtil.extractMediaStatus()
556
- }, 'Media status could not be extracted, participant is undefined.');
557
- });
558
-
559
- it('returns undefined media status when participant audio/video status is not present', () => {
560
- const participant = {
561
- status: {}
562
- };
563
-
564
- const mediaStatus = MemberUtil.extractMediaStatus(participant)
565
-
566
- assert.deepEqual(mediaStatus, {audio: undefined, video: undefined});
567
- });
568
-
569
- it('returns correct media status when participant audio/video status is present', () => {
570
- const participant = {
571
- status: {
572
- audioStatus: 'RECVONLY',
573
- videoStatus: 'SENDRECV'
574
- }
575
- };
576
-
577
- const mediaStatus = MemberUtil.extractMediaStatus(participant)
578
-
579
- assert.deepEqual(mediaStatus, {audio: 'RECVONLY', video: 'SENDRECV'});
580
- });
581
- });
@@ -3,6 +3,7 @@ import chai from 'chai';
3
3
  import chaiAsPromised from 'chai-as-promised';
4
4
  import sinon from 'sinon';
5
5
  import ReconnectionManager from '@webex/plugin-meetings/src/reconnection-manager';
6
+ import { RECONNECTION } from '../../../../src/constants';
6
7
 
7
8
  const {assert} = chai;
8
9
 
@@ -114,16 +115,6 @@ describe('plugin-meetings', () => {
114
115
  meetingId: rm.meeting.id,
115
116
  },
116
117
  });
117
-
118
- assert.calledWith(fakeMeeting.webex.internal.newMetrics.submitClientEvent, {
119
- name: 'client.media.recovered',
120
- payload: {
121
- recoveredBy: 'new',
122
- },
123
- options: {
124
- meetingId: rm.meeting.id,
125
- },
126
- });
127
118
  });
128
119
 
129
120
  it('does not clear previous requests and re-request media for non-multistream meetings', async () => {
@@ -187,9 +178,10 @@ describe('plugin-meetings', () => {
187
178
  */
188
179
  describe('ReconnectionManager', () => {
189
180
  let reconnectionManager;
181
+ let fakeMeeting;
190
182
 
191
183
  beforeEach(() => {
192
- reconnectionManager = new ReconnectionManager({
184
+ fakeMeeting = {
193
185
  config: {
194
186
  reconnection: {
195
187
  enabled: true,
@@ -204,7 +196,9 @@ describe('plugin-meetings', () => {
204
196
  },
205
197
  },
206
198
  },
207
- });
199
+ };
200
+
201
+ reconnectionManager = new ReconnectionManager(fakeMeeting);
208
202
  });
209
203
 
210
204
  describe('iceReconnected()', () => {
@@ -310,5 +304,41 @@ describe('plugin-meetings', () => {
310
304
  });
311
305
  });
312
306
  });
307
+
308
+ describe('setStatus()', () => {
309
+ beforeEach(() => {
310
+ reconnectionManager.status = RECONNECTION.STATE.DEFAULT_STATUS;
311
+ });
312
+
313
+ it('should correctly change status to in progress', () => {
314
+ reconnectionManager.setStatus(RECONNECTION.STATE.IN_PROGRESS);
315
+
316
+ assert.equal(reconnectionManager.status, RECONNECTION.STATE.IN_PROGRESS);
317
+ });
318
+
319
+ it('should correctly change status to complete', () => {
320
+ reconnectionManager.setStatus(RECONNECTION.STATE.COMPLETE);
321
+
322
+ assert.equal(reconnectionManager.status, RECONNECTION.STATE.COMPLETE);
323
+ });
324
+
325
+ it('should correctly change status to failure', () => {
326
+ reconnectionManager.setStatus(RECONNECTION.STATE.FAILURE);
327
+
328
+ assert.equal(reconnectionManager.status, RECONNECTION.STATE.FAILURE);
329
+ });
330
+ });
331
+
332
+ describe('cleanUp()', () => {
333
+ it('should call reset and keep reference to meeting object', () => {
334
+ const resetSpy = sinon.spy(reconnectionManager, 'reset');
335
+ assert.equal(reconnectionManager.meeting, fakeMeeting);
336
+
337
+ reconnectionManager.cleanUp();
338
+
339
+ assert.equal(reconnectionManager.meeting, fakeMeeting);
340
+ assert.calledOnce(reconnectionManager.reset);
341
+ });
342
+ });
313
343
  });
314
344
  });
@@ -6,15 +6,26 @@ import RTC_METRICS from '../../../../src/rtcMetrics/constants';
6
6
 
7
7
  const FAKE_METRICS_ITEM = {payload: ['fake-metrics']};
8
8
 
9
+ const STATS_WITH_IP = '{\"id\":\"RTCIceCandidate_/kQs0ZNU\",\"type\":\"remote-candidate\",\"transportId\":\"RTCTransport_0_1\",\"isRemote\":true,\"ip\":\"11.22.111.255\",\"address\":\"11.22.111.255\",\"port\":5004,\"protocol\":\"udp\",\"candidateType\":\"host\",\"priority\":2130706431}';
10
+ const STATS_WITH_IP_RESULT = '{\"id\":\"RTCIceCandidate_/kQs0ZNU\",\"type\":\"remote-candidate\",\"transportId\":\"RTCTransport_0_1\",\"isRemote\":true,\"ip\":\"11.22.111.240\",\"address\":\"11.22.111.240\",\"port\":5004,\"protocol\":\"udp\",\"candidateType\":\"host\",\"priority\":2130706431}';
11
+
9
12
  describe('RtcMetrics', () => {
10
13
  let metrics: RtcMetrics;
11
14
  let webex: MockWebex;
12
15
  let clock;
16
+ let anonymizeIpSpy;
17
+
18
+ const sandbox = sinon.createSandbox();
13
19
 
14
20
  beforeEach(() => {
15
21
  clock = sinon.useFakeTimers();
16
22
  webex = new MockWebex();
17
23
  metrics = new RtcMetrics(webex, 'mock-meeting-id', 'mock-correlation-id');
24
+ anonymizeIpSpy = sandbox.spy(metrics, 'anonymizeIp');
25
+ });
26
+
27
+ afterEach(() => {
28
+ sandbox.restore();
18
29
  });
19
30
 
20
31
  it('sendMetrics should send a webex request', () => {
@@ -70,4 +81,13 @@ describe('RtcMetrics', () => {
70
81
 
71
82
  assert.callCount(webex.request, 1);
72
83
  });
84
+
85
+ it('should anonymize IP addresses', () => {
86
+ assert.strictEqual(metrics.anonymizeIp(STATS_WITH_IP), STATS_WITH_IP_RESULT);
87
+ });
88
+
89
+ it('should call anonymizeIp', () => {
90
+ metrics.addMetrics({ name: 'stats-report', payload: [STATS_WITH_IP] });
91
+ assert.calledOnce(anonymizeIpSpy);
92
+ })
73
93
  });
@@ -179,7 +179,7 @@ describe('plugin-meetings', () => {
179
179
  report: [
180
180
  {
181
181
  type: 'outbound-rtp',
182
- framesSent: 0,
182
+ framesSent: 1500,
183
183
  bytesSent: 1,
184
184
  },
185
185
  {
@@ -209,7 +209,7 @@ describe('plugin-meetings', () => {
209
209
  bytesReceived: 1,
210
210
  frameHeight: 720,
211
211
  frameWidth: 1280,
212
- framesReceived: 1,
212
+ framesReceived: 1500,
213
213
  },
214
214
  {
215
215
  type: 'candidate-pair',
@@ -437,6 +437,16 @@ describe('plugin-meetings', () => {
437
437
  assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.MICROPHONE).information, _UNKNOWN_);
438
438
  assert.strictEqual(mqeData.intervalMetadata.peripherals.find((val) => val.name === MEDIA_DEVICES.CAMERA).information, _UNKNOWN_);
439
439
  });
440
+
441
+ it('emits the correct frameRate', async () => {
442
+ await startStatsAnalyzer({expected: {receiveVideo: true}});
443
+
444
+ await progressTime();
445
+ assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
446
+ fakeStats.video.receivers[0].framesReceived = 3000;
447
+ await progressTime();
448
+ assert.strictEqual(mqeData.videoReceive[0].streams[0].common.receivedFrameRate, 25);
449
+ });
440
450
  });
441
451
  });
442
452
  });